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.