quantity - moq nuget
¿Cuál es el propósito de Verificable() en Moq? (2)
¿Cuál es el propósito de Verifiable() ?
Si verifico un Mock y lo dejo, aún se verifica la SetUp .
Editar: Estaba usando VerifyAll() tanto, el motivo de todo lo que se verifica. Después de cambiar a Verify() solo se .Verifiable() mis .Verifiable() .
ADDENDUM: Como dice la otra respuesta, el propósito de .Verifiable es .Verifiable una Setup en un conjunto de "llamadas de Verify(...) diferidas Verify(...) " que luego se pueden desencadenar a través de mock.Verify() .
La aclaración del OP deja en claro que ese era el objetivo y que el único problema era descubrir por qué no funcionaba, pero cuando @Liam lo pinchó, la respuesta también debería tocar esto: - Los casos clave de uso en la medida de lo posible ver son:
- manteniendo DRYness entre un
mock.Setup()ymock.Verify - lo que permite desconectar la configuración de una verificación de la propia llamada a
Verify(por ejemplo, puede configurarlo en otro método de ayuda)
... y volviendo a mi respuesta, que de manera muy escueta dice: "tengan cuidado ya que se considera que los beneficios anteriores son superados por el efecto que tiene el logro de esos objetivos en la legibilidad y mantenimiento de pruebas que se basan demasiado en tales construcciones"
ORIGINAL: Tenga en cuenta que siempre que sea posible, uno debe seguir el diseño AAA y, por lo tanto, uno debe hacer un mock.Verify( expression ) explícito. mock.Verify( expression ) llamadas después de que se haya realizado el trabajo, en lugar de un mock.Setup( ... ).Verifiable() emparejado con un mock.Verify() o mock.VerifyAll() siempre que sea posible (crédito: @kzu ).
Cuando se llama al método Verify() al final de la prueba, si no se ha llamado a ninguna de las expectativas marcadas como verificables, se thrown una excepción.
VerifyAll() no verifica las expectativas verificables.