APÉNDICE: Como dice la otra respuesta, el propósito de .Verifiable
es enlistar un Setup
en un conjunto de " Verify(...)
llamadas diferidas " que luego se pueden activar a través de mock.Verify()
.
La aclaración del OP deja en claro que este era el objetivo y el único problema era descubrir por qué no funcionaba, pero como lo señaló @Liam, la respuesta realmente debería tocar esto también: - Los casos de uso clave hasta donde puedo ver son:
- el mantenimiento de sequedad entre una
mock.Setup()
ymock.Verify
- lo que permite desconectar la configuración de una verificación de la
Verify
llamada real (por ejemplo, puede configurarla en otro método auxiliar)
... y volviendo a mi respuesta, que de manera inequívoca dice "tenga cuidado, ya que los profesionales anteriores se consideran comúnmente compensados por el efecto que tiene el logro de esos objetivos en la legibilidad y la capacidad de mantenimiento de las pruebas que se apoyan demasiado en tales construcciones"
ORIGINAL: Tenga en cuenta que, cuando sea posible, uno debería seguir el diseño AAA y, por lo tanto, debería hacer mock.Verify( expression )
llamadas explícitas después de que se haya realizado el trabajo, en lugar de mock.Setup( ... ).Verifiable()
emparejarse con un mock.Verify()
omock.VerifyAll()
siempre que sea posible (crédito: @kzu ).