Comment vérifier qu'une méthode est appelée deux fois avec mockito verify ()


307

Je veux vérifier si une méthode est appelée au moins une fois via mockito verify. J'ai utilisé vérifier et il se plaint comme ceci:

org.mockito.exceptions.verification.TooManyActualInvocations: 
Wanted 1 time:
But was 2 times. Undesired invocation:

Réponses:


519

Utilisation du mode de vérification approprié:

import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

verify(mockObject, atLeast(2)).someMethod("was called at least twice");
verify(mockObject, times(3)).someMethod("was called exactly three times");

22
Vous pouvez également utiliser Mockito.times(...)au lieu de VerificationModeFactory.times(...)pour l'importation statique
Wim Deblauwe

26
import static org.mockito.Mockito.times;. Il est généralement import static org.mockito.internal.verification.VerificationModeFactory.times;déconseillé d' importer des packages contenant "interne" ( ).
Roger

existe-t-il une autre façon d'écrire les temps (1)?
Glenn Bech

1
@GlennBech Vous pouvez simplement omettre cela , c'est implicite; la valeur par défaut verify(mockObject).someMethod("")recherche exactement 1 interaction (ni plus, ni moins). Si, au contraire, vous souhaitez au moins une invocation de la méthode, vous pouvez utiliser le atLeastOnce()spécificateur.
nbrooks

1
@ Roger Je suis d'accord avec vous, pour un débutant en TDD comme moi, l'importation statique me rend plus confus quant à la mémorisation des méthodes ou du framework utilisé (Mockito, Espresso, ou tout simplement un test unitaire normal).
Pensez deux fois au code une fois
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.