APÉNDICE: Como dice la otra respuesta, el propósito de .Verifiablees enlistar un Setupen 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
Verifyllamada 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 ).