Mockito - séparément vérification de multiples appels sur la même méthode
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.verify;
import org.mockito.ArgumentCaptor;
import org.mockito.Mockito;
public class MockitoTest {
public static class TestMock {
public void doIt(String s) {
}
}
public static void main(String[] args) {
TestMock mock = Mockito.mock(TestMock.class);
mock.doIt("1");
mock.doIt("2");
ArgumentCaptor<String> argument = ArgumentCaptor.forClass(String.class);
verify(mock, atLeastOnce()).doIt(argument.capture());
System.out.println(argument.getValue());
verify(mock, atLeastOnce()).doIt(argument.capture());
System.out.println(argument.getValue());
}
}
Je m'attendais à cette impression 1 2
mais plutôt des impressions 2 2
. Il semble que le '1' invocation est perdu. Est-il possible que je peux vérifier que les vérifications qui s'est passé avec 1
et puis 2
?
OriginalL'auteur bcoughlan | 2016-02-10
Vous devez vous connecter pour publier un commentaire.
Vous pouvez appeler
ArgumentCaptor.getAllValues()
au lieu degetValue()
. Ce sera le retour de toutes les valeurs saisies:Dans ce cas, il sera de retour une
List<String>
contenant1
et2
.La
getValue()
méthode retourne la dernière capturé valeur:Dans votre code, vous pouvez remplacer
atLeastOnce()
avec la plus précisetimes(2)
depuis la maquette a été appelé 2 fois. Vous n'avez pas besoin d'avoir deux appels distincts àverify
pour capturer les arguments: Mockito serez en mesure de capturer tous les arguments passés à la maquette avec un seul appel.OriginalL'auteur Tunaki
Passer à
getAllValues()
degetValues()
. Il sera de retour une liste de toutes les captures qu'il effectue sur votre maquette.OriginalL'auteur Todd
Ce dont j'ai réellement besoin dans la fin est en-vérification de la commande progressive de la vérification, à l'aide des appels() VerificationMode
OriginalL'auteur bcoughlan