Wie kann ich überprüfen, dass die Methode NICHT in Moq ?
Verfügt es über etwas wie AssertWasNotCalled?
UPDATE: Ab der Version 3.0 kann eine neue Syntax verwendet werden:
mock.Verify(foo => foo.Execute("ping"), Times.Never());
Wie kann ich überprüfen, dass die Methode NICHT in Moq ?
Verfügt es über etwas wie AssertWasNotCalled?
UPDATE: Ab der Version 3.0 kann eine neue Syntax verwendet werden:
mock.Verify(foo => foo.Execute("ping"), Times.Never());
Ich weiß, dass dies eine sehr alte Frage ist, aber sie erschien gerade in meiner Seitenleiste, und ich möchte meine Lösung hinzufügen.
Viele Unit-Tests scheinen mehrere Funktionen als Teil des Setups nachzubilden, werden dann aber während des Tests nicht verwendet.
Sicherlich ist es besser, striktes Mocking zu aktivieren (was bedeutet, dass alles, was nicht explizit eingerichtet ist, eine Ausnahme auslöst), und dann keine Funktionen einzurichten, von denen man nicht erwartet, dass sie aufgerufen werden. Oder anders ausgedrückt: Richten Sie nur die Funktionen ein, von denen ein Test erwartet, dass sie aufgerufen werden, und alles andere wird eine Ausnahme auslösen.
var thingBeingTested = new Mock<IThink>(MockBehaviour.Strict);
thingBeingTested.ThisWillThrowAnExceptionBecauseItHasNotBeenMocked();
Angenommen, Sie haben diese Methode und möchten prüfen, ob sie nicht aufgerufen wird
//Setup
var databaseSessionMock = new Mock<IDatabaseSession>();
databaseSessionMock.Setup(m => m.Commit()).Returns(true).Verifiable();
RepositoryFactory.Configure<IDatabaseSession>(databaseSessionMock.Object);
können Sie wie folgt testen
databaseSessionMock.Verify(m => m.Commit(It.IsAny()), Times.Never(), "Database Session mock object was not used");
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
0 Stimmen
Ab v4.8 gibt es eine alternativer Ansatz das ist auch eine Überlegung wert.