c# - remove - htmlagilitypack




Come verificare che il metodo NON sia stato chiamato in Moq? (4)

Questo non funziona nelle versioni recenti di Moq (almeno da 3.1), dovrebbe essere specificato nel metodo Verify come menzionato nella risposta.

In realtà, è meglio specificare .AtMost(0) dopo l'istruzione Returns.

var m = new Mock<ISomething>();
m.Expect(x => x.Forbidden()).Returns("foo").AtMost(0);

Sebbene anche i "tiri" AtMost(0) , AtMost(0) è un IMHO più espressivo.

Come posso verificare che il metodo NON sia stato chiamato in Moq ?

Ha qualcosa come AssertWasNotCalled?

AGGIORNAMENTO: a partire dalla versione 3.0, è possibile utilizzare una nuova sintassi:

mock.Verify(foo => foo.Execute("ping"), Times.Never());

Esegui una verifica dopo il test che ha un Times.Never . per esempio

_mock.Object.DoSomething()
_mock.Verify(service => service.ShouldntBeCalled(),Times.Never());

Usa .AtMostOnce ();

Dopo il test reale, chiama di nuovo il metodo. Se lancia un'eccezione, è stato chiamato.


AGGIORNAMENTO : Dalla versione 3, controlla l'aggiornamento alla domanda sopra o la risposta di Dann sotto.

O, rendi il tuo mock severo in modo che fallisca se chiami un metodo per il quale non ti aspetti

new Mock<IMoq>(MockBehavior.Strict)

Oppure, se vuoi che il tuo finto sia libero, usa i .Throws (Exception)

var m = new Mock<IMoq>(MockBehavior.Loose);
m.Expect(a => a.moo()).Throws(new Exception("Shouldn't be called."));






moq