Cómo verificar un método se llama dos veces con mockito generate ()

307

Quiero verificar si se llama a un método al menos una vez a través de la verificación simulada. Solía ​​verificar y se queja así:

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

Respuestas:

519

Usando el VerificationMode apropiado:

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
fuente
22
También puede usar en Mockito.times(...)lugar de VerificationModeFactory.times(...)para la importación estática
Wim Deblauwe
26
import static org.mockito.Mockito.times;. Generalmente import static org.mockito.internal.verification.VerificationModeFactory.times;se desaconseja importar paquetes con "interno" en ellos ( ).
Roger
¿Hay otra forma de escribir tiempos (1)?
Glenn Bech
1
@GlennBech Puede omitir eso , está implícito; el valor predeterminado verify(mockObject).someMethod("")busca exactamente 1 interacción (ni más ni menos). Si, en cambio, desea al menos una invocación del método, puede usar el atLeastOnce()especificador.
nbrooks
1
@Roger Estoy de acuerdo con usted, para un practicante de TDD principiante como yo, la importación estática me confunde más al recordar los métodos o qué marco está utilizando (Mockito, Espresso, o simplemente una prueba de unidad normal).
Piensa dos veces el código una vez el