2008-10-23 7 views
53

Wo finde ich eine umfassende Dokumentation für MOQ? Ich beginne gerade mit dem Spotten und habe Schwierigkeiten, meinen Kopf darum zu drehen. Ich habe alle Links unter http://code.google.com/p/moq/wiki/QuickStart gelesen, aber ich kann nicht scheinen, ein Tutorial oder eine sanfte Einführung zu finden.Wo ist die MOQ-Dokumentation?

Ich habe auch kurz auf Rhino Mocks geschaut, fand es aber sehr verwirrend.


Ja - ich lese Stephen Walthers Artikel - sehr hilfreich. Ich bin auch durch die Links gegangen. Ich kann nicht scheinen, um das Video bei http://www.bestechvideos.com/2008/06/08/dimecasts-net-introduction-to-mocking-with-moq [gebrochen link]

Speziell ich, um zu bestimmen versuchen, zu beobachten, ob ein Ereignis aus der verspottete Klasse erhöht wurde. Ich kann das Beispiel für Ereignisse auf der QuickStarts-Seite nicht kompilieren. In den Google-Gruppen hat Daniel erklärt, dass CreateEventHandler nur ein Ereignis vom Typ EventHandler<TEventArgs> verarbeiten kann, aber selbst dann kann ich den Code nicht kompilieren.

Genauer gesagt habe ich eine Klasse, die INotifyChanged implementiert.

public class Entity : INotifyChanged 
{ 
    public event PropertyChangingEventHandler PropertyChanging; 

    public int Id 
     { 
      get {return _id;} 
      set { 
       _id = value; 
       OnPropertyChanged("Id"); 
       } 
     } 

    protected void OnPropertyChanged(string property) 
     { 
     if (PropertyChanged != null) 
      PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
     } 
etc .....  
} 

Wie verspotten ich die Klasse zu testen, ob das PropertyChanged Ereignis ausgelöst wurde? Ich kann nicht das Ereignis public event EventHandler<PropertyChangedEventArgs> umschreiben weil ich diesen Fehler:

Error 1 'CoreServices.Notifier' does not implement interface member System.ComponentModel.INotifyPropertyChanged.PropertyChanged'. 'CoreServices.Notifier.PropertyChanged' cannot implement 'System.ComponentModel.INotifyPropertyChanged.PropertyChanged' because it does not have the matching return type of 'System.ComponentModel.PropertyChangedEventHandler'.

+0

Der angezeigte Fehler ist ein Visual Studio/Compiler Fehler. Entfernen Sie einfach alles aus dem Ordner bin und erstellen Sie es neu. – CodingBarfield

+0

Der Link zu * Einführung in Mocking mit Moq * in meiner Antwort ist behoben. –

+0

der Link ist gebrochen (wieder) – PPC

Antwort

15

Haben Sie beobachtet Introduction to Mocking with Moq? Es ist ein einführender Überblick über die Verwendung von Moq und richtet sich an diejenigen, die neu sind, sich entweder im Allgemeinen zu mokieren, oder das Moq-Framework selbst.

30

Moq neueste Dokumentation ist jetzt in GitHub Wiki-Seite zur Verfügung:

https://github.com/Moq/moq4/wiki/Quickstart

Zuvor waren sie auf Google Code. Genau wie das Wiki und andere Online-Ressourcen gibt es eine vollständige Dokumentation im Windows .CHM-Hilfedateiformat, das in der Moq binary download enthalten ist, die von the Moq homepage verlinkt ist.

+1

Direkter Link zur neuesten Version (4.0.10827): http://moq.googlecode.com/files/Moq.4.0.10827.Final.zip – vossad01

+0

Sehr kurios und plattformspezifisch, aber durchaus funktional! –

+1

dort nicht genug Details, um diese * Dokumentation zu nennen * – anatol

1

I am trying to determine whether an event was raised from the mocked class.

Sind Sie? Oder versuchen Sie festzustellen, ob die Id-Eigenschaft festgelegt wurde? Denken Sie daran, dass ein Schein standardmäßig kein Verhalten hat. Es werden keine Benachrichtigungsereignisse ausgelöst.

ich tun würde:

const int ExpectedId = 123; 
mockEntity.VerifySet(x => x.Id = ExpectedId); 

Dies setzt voraus, dass Entity eine Schnittstelle implementiert; Ein Beispiel:

public interface IKeyedEntity 
{ 
    int Id { get; set; } 
} 

Das heißt, wenn Entity ein POCO ohne interessantes Verhalten ist, würde ich weder eine Schnittstelle (außer INotifyChanged) implementieren oder sie verspotten. Testen Sie mit einer tatsächlichen Entity Instanz (verwenden Sie keine Datenbank). Sich über Dienstleistungen und komplexe Abhängigkeiten lustig machen.

Weitere Moq Funktionen finden

Old style imperative mocks vs moq functional specifications und Mock.Of - how to specify behavior? (thread). Ich habe auch mein eigenes Beispiel Moq v4 functional specifications veröffentlicht.