Java verify void méthode appelle n fois avec Mockito


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. Dire que j'ai 4 choses dans la liste et j'ai un point de validation de 1, j'attendrais la méthode "send" pour être appelé 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 où il a été appelé. Je pense que

Mockito.verify(mock.send(), times(4))

Serait suffisant, mais il dit que les paramètres ne sont pas corrects pour verify.

Incidemment, si je change Mockito.verify(mock).send() en Mockito.verify(mock.send()) ou Mockito.verify((mock).send()) j'obtiens la même erreur. Pensées à ce sujet?

Author: nbpeth, 2015-01-05

1 answers

La méthode nécessaire est Mockito#vérifier:

public static <T> T verify(T mock,
                           VerificationMode mode)

mock est votre objet moqué et mode est le VerificationMode qui décrit comment la simulation doit être vérifiée. Les modes possibles sont:

verify(mock, times(5)).someMethod("was called five times");
verify(mock, never()).someMethod("was never called");
verify(mock, atLeastOnce()).someMethod("was called at least once");
verify(mock, atLeast(2)).someMethod("was called at least twice");
verify(mock, atMost(3)).someMethod("was called at most 3 times");
verify(mock, atLeast(0)).someMethod("was called any number of times"); // useful with captors
verify(mock, only()).someMethod("no other method has been called on the mock");

Vous aurez besoin de ces importations statiques depuis le Mockito classe afin d'utiliser la méthode verify et ces modes de vérification:

import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.atMost;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.only;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

(La classe VerificationModeFactory fournit également mentionnés modes de vérification. Vous pouvez donc également utiliser cette classe pour le importations statiques.)

, Donc dans votre cas, la syntaxe correcte sera:

Mockito.verify(mock, times(4)).send()

Ceci vérifie que la méthode send a été appelée 4 fois sur l'objet moqué. 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, alors vous n'avez pas besoin de passer un VerificationMode. Un simple

verify(mock).someMethod("was called once");

Serait suffisant. Il utilise en interne verify(mock, times(1)).someMethod("was called once");.

 163
Author: Tom, 2018-05-14 16:25:41