Moq eine void-Methode
Ich versuche, herauszufinden, wie dieses Modell (mit der Moq-framework) Zeug alles funktioniert, aber inzwischen bin ich ein bisschen verwirrt, mit Methoden, die "void" zurückgeben.
Dem original-Objekt hat die folgenden Eigenschaften/Methoden:
void Add(Person entity);
void Save();
IQueryable<Person> Persons;
Die Add-Methode aufruft InsertOnSubmit
(es ist Linq to sql), und die Speichern-Methode aufruft Context.SubmitChanges()
. Die Person-Eigenschaft gibt die Table<News>
Objekt.
Ich bin mir nicht sicher, wie ich gehen über die Verspottung diesen Methoden jedoch, wie ich, kann natürlich nicht verwenden Returns()
.
Oder muss mein design bedeutet, dass ich kann nicht wirklich Mock-Objekte richtig?
- Ohne weiteren Kontext ist es ein bisschen schwierig, eine gute Antwort.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es hängt davon ab, was Sie testen möchten.
Moq helfen Ihnen erheblich, wenn Sie testen möchten Interaktionen zwischen der Klasse getestet, und andere Klassen.
In dem Fall, das Sie beschreiben, Sie sind vermutlich testen einer Klasse die Klasse mit Methoden und Eigenschaften, die oben erwähnt. Um zu überprüfen, Interaktionen, die Sie wollen, um zu überprüfen, ob die
Add
- Methode aufgerufen, mit der erwarteten Parameter, dass dieSave
Methode aufgerufen wird und dass diePersons
Eigenschaft ist verwiesen auf in der Reihenfolge, um die Ergebnisse zu Lesen. Dies kann erreicht werden, in der folgenden Weise:Wenn Sie möchten, testen Sie etwas anderes und bieten eine stub Implementierung dieser Methoden, dann möchten Sie vielleicht, um einfach erstellen Sie eine test-Implementierung oder verwenden Moq setups mit Funktionen, ausgedrückt als Lambda-Ausdrücke eher als einfache setups.