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:

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");

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.