J'essaie de vérifier qu'une méthode (void) est appelée à l'intérieur d'un DAO - j'utilise un point de validation qui envoie une liste de résultats jusqu'à ce point, réinitialise la liste et continue. Disons que j'ai 4 choses dans la liste et que j'ai un point de commit de 1, je m'attendrais à ce que la méthode "send" soit appelée 4 fois. Je peux vérifier que la méthode est appelée une fois en écrivant
Mockito.verify(mock).send()
ça passe .. mais je veux vérifier le nombre de fois qu'il a été appelé. Je penserais que
Mockito.verify(mock.send(), times(4))
serait suffisant, mais il indique que les paramètres ne sont pas corrects pour la vérification.
Incidemment, si je change Mockito.verify(mock).send()
en Mockito.verify(mock.send())
ou Mockito.verify((mock).send())
j'obtiens la même erreur. Des pensées à ce sujet?
Mockito.verify(mock, times(4)).send()
. Je me demande pourquoi vous avez "déplacé" l'send()
appel de méthode à l'intérieur de laverify
méthode. Vous aviez déjà la bonne syntaxe.verify(mock, atLeastOnce()).send();
Mockito.verify(mock).send()
passé, mais simplement l'encapsuler, a provoqué une erreur, qui ne change rien. cependant, c'est une victoire!Réponses:
La méthode nécessaire est Mockito # verify :
mock
est votre objet fictif etmode
est leVerificationMode
qui décrit comment la maquette doit être vérifiée. Les modes possibles sont :Vous aurez besoin de ces importations statiques de la
Mockito
classe pour utiliser laverify
méthode et ces modes de vérification:Donc, dans votre cas, la syntaxe correcte sera:
Cela vérifie que la méthode a
send
été appelée 4 fois sur l'objet simulé. Il échouera s'il a été appelé moins ou plus de 4 fois.Si vous voulez juste vérifier si la méthode a été appelée une fois, vous n'avez pas besoin de passer un
VerificationMode
. Un simplesuffirait. Il utilise en interne
verify(mock, times(1)).someMethod("was called once");
.Il est possible d'avoir plusieurs appels de vérification sur le même simulacre pour réaliser une vérification «entre». Mockito ne supporte pas quelque chose comme ça
verify(mock, between(4,6)).someMethod("was called between 4 and 6 times");
, mais nous pouvons écrireà la place, pour obtenir le même comportement. Les bornes sont incluses , donc le cas de test est vert lorsque la méthode a été appelée 4, 5 ou 6 fois.
la source
VerificationMode
méthodes (pour l'importation statique ou une référence explicite), elles se trouvent dansorg.mockito.internal.verification.VerificationModeFactory
.verify(mock, atLeast(0)).someMethod("was called any number of times");
était utile pour ignorer une vérification d'appelverify(between(m,n))
qui vérifie le nombre d'appels entre m et n?verify
à des moments avecatLeast(M)
etatMost(n)
obtenir le même comportement. J'ai édité la réponse pour l'expliquer.VerificationModeFactory
. Il est toujours disponible dans la dernière version, mais je suis d'accord que les classes internes ne devraient pas être utilisées.