¿Cómo verifico que el método NO fue llamado en Moq ?
¿Tiene algo como AssertWasNotCalled?
ACTUALIZACIÓN: a partir de la versión 3.0, se puede utilizar una nueva sintaxis:
mock.Verify(foo => foo.Execute("ping"), Times.Never());
ACTUALIZACIÓN : desde la versión 3, verifique la actualización de la pregunta anterior o la respuesta de Dann a continuación.
O bien, haga que su simulación sea estricta para que falle si llama a un método para el que no tiene expectativas
new Mock<IMoq>(MockBehavior.Strict)
O, si quieres que tu simulacro se suelte, usa .Throws (Excepción)
var m = new Mock<IMoq>(MockBehavior.Loose);
m.Expect(a => a.moo()).Throws(new Exception("Shouldn't be called."));
Ejecute una verificación después de la prueba que tiene una
Times.Never
enumeración establecida. p.ejfuente
Robado de: la respuesta de John Foster a la pregunta, "Necesito ayuda para entender mejor a Moq"
fuente
En realidad, es mejor especificar
.AtMost(0)
después de la declaración de Devoluciones.Aunque los "tiros" también funcionan,
AtMost(0)
es más expresivo en mi humilde opinión.fuente
Utilice .AtMostOnce ();
Después de la prueba real, llame al método nuevamente. Si arroja una excepción, se llamó.
fuente