Wie überprüfe ich, ob die Methode in Moq NICHT aufgerufen wurde ?
Hat es so etwas wie AssertWasNotCalled?
UPDATE: Ab Version 3.0 kann eine neue Syntax verwendet werden:
mock.Verify(foo => foo.Execute("ping"), Times.Never());
UPDATE : Überprüfen Sie seit Version 3 das Update der obigen Frage oder die Antwort von Dann unten.
Machen Sie Ihren Mock entweder streng, damit er fehlschlägt, wenn Sie eine Methode aufrufen, für die Sie keine Erwartungen haben
new Mock<IMoq>(MockBehavior.Strict)
Oder wenn Sie möchten, dass Ihr Mock locker ist, verwenden Sie die .Throws (Ausnahme)
var m = new Mock<IMoq>(MockBehavior.Loose);
m.Expect(a => a.moo()).Throws(new Exception("Shouldn't be called."));
Führen Sie nach dem Test eine Überprüfung durch, für die eine
Times.Never
Aufzählung festgelegt wurde. z.Bquelle
Gestohlen von: John Fosters Antwort auf die Frage "Brauchen Sie Hilfe, um Moq besser zu verstehen?"
quelle
Eigentlich ist es besser,
.AtMost(0)
nach der Returns-Anweisung anzugeben .Obwohl die "Würfe" auch funktionieren,
AtMost(0)
ist IMHO ausdrucksvoller.quelle
Verwenden Sie .AtMostOnce ();
Rufen Sie die Methode nach dem eigentlichen Test erneut auf. Wenn es eine Ausnahme auslöst, wurde es aufgerufen.
quelle