Quel est le but de Verifiable()
?
Si je vérifie un Mock
et laisse cela de côté, il vérifie toujours le SetUp
.
Edit: J'utilisais VerifyAll()
donc la raison pour laquelle tout était vérifié. Après être passé à Verify()
seules mes .Verifiable()
SetUp
étaient vérifiées.
ADDENDUM: Comme l'indique l'autre réponse, le but de .Verifiable
Est d'enrôler un Setup
dans un ensemble d'appels "différés Verify(...)
" qui peuvent ensuite être déclenchés via mock.Verify()
.
La clarification du PO indique clairement que c'était le but et le seul problème était de comprendre pourquoi cela ne fonctionnait pas, mais comme l'a dit @Liam, la réponse devrait vraiment toucher à cela aussi: - Pour autant que je sache, les principaux cas d'utilisation sont:
mock.Setup()
et mock.Verify
Verify
lui-même (par exemple, vous pouvez le configurer dans une autre méthode d'assistance)... et revenons à ma réponse, qui dit en termes simples: "soyez prudent, car les avantages ci-dessus sont généralement considérés comme contrebalancés par l'effet que la réalisation de ces objectifs a sur la lisibilité et la maintenabilité des tests qui s'appuient trop sur de telles constructions"
ORIGINAL: Notez que si possible, on devrait plutôt suivre la disposition AAA et donc on devrait être faire des appels explicites mock.Verify( expression )
une fois le travail terminé, plutôt qu'une mock.Setup( ... ).Verifiable()
associée à une mock.Verify()
ou mock.VerifyAll()
dans la mesure du possible (crédit: @ kz ).
Lorsque la méthode Verify()
est appelée à la fin du test, si aucune des attentes marquées comme vérifiables n'a été appelée, alors une exception est thrown
.
VerifyAll()
ne vérifie pas les attentes vérifiables.