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:
Ahmad Beg
la source

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");
Liosan
la source
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