Mockito: attendre une invocation qui correspond aux arguments
Je suis en train d'écrire une sélénium tester et de vérifier le comportement de serveur avec mockito. Plus précisément, lorsque l'on clique sur un bouton, je veux assurez-vous que le contrôleur de la page appelle une méthode sur une dépendance dont je me suis moqué.
Parce que c'est une sélénium test, j'ai besoin d'attendre la maquette doit être invoquée dans un autre thread, donc je suis en utilisant mockito délai d'attente.
verify(myMock, timeout(5000).times(1)).myMethod("expectedArg");
Le problème que je rencontre est que myMethod est appelé à de nombreuses reprises... plutôt que d'attendre une invocation qui correspond à la arguments attendus, le délai d'attente n'attend pour la première invocation.
Si j'utilise du Fil.sommeil(50000) plutôt que de délai d'attente(50000), il fonctionne comme prévu... mais c'est sale, donc je suis en espérant éviter.
Comment dois-je attendre pour myMethod être invoquée à l'entrée?
source d'informationauteur Bryan Hart
Vous devez vous connecter pour publier un commentaire.
Si vous êtes en mesure de définir un nombre fixe d'appels à attendre, il peut être fait avec un
ArgumentCaptor
:Une autre façon est de spécifier toutes les valeurs attendues pour vérifier, mais ceux qui doivent être fournis dans l'ordre exact qu'ils sont invoqués. La différence de la solution ci-dessus est que ce n'est pas l'échec, même si la maquette est en outre appelé à certains non-vérifié arguments. En d'autres termes, pas besoin de connaître le nombre total d'appels. Exemple de Code:
Ce n'est pas une super solution propre, mais vous pouvez le faire (
XX
est censé type de retour ici):Ensuite, pour tester si la méthode est appelée, ne: