¿Cómo verificar que no se llamó a un método específico usando Mockito?

Resuelto beluchin asked hace 12 años • 7 respuestas

¿ Cómo verificar que un método no se llama en función de la dependencia de un objeto?

Por ejemplo:

public interface Dependency {
    void someMethod();
}

public class Foo {
    public bar(final Dependency d) {
        ...
    }
}

Con la prueba de Foo:

public class FooTest {
    @Test
    public void dependencyIsNotCalled() {
        final Foo foo = new Foo(...);
        final Dependency dependency = mock(Dependency.class);
        foo.bar(dependency);
        **// verify here that someMethod was not called??**
    }
}
beluchin avatar Oct 12 '12 22:10 beluchin
Aceptado

Aún más significativo:

import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;

// ...

verify(dependency, never()).someMethod();

La documentación de esta función se encuentra en el §4 "Verificación del número exacto de invocaciones/al menos x/nunca" , y el neverjavadoc está aquí .

bric3 avatar Oct 12 '2012 16:10 bric3

Utilice el segundo argumento del Mockito.verifymétodo, como en:

Mockito.verify(dependency, Mockito.times(0)).someMethod()
beluchin avatar Oct 12 '2012 15:10 beluchin

Primero que nada: siempre debes importar mockito static, de esta manera el código será mucho más legible (e intuitivo):

import static org.mockito.Mockito.*;

En realidad, hay muchas maneras de lograr esto, sin embargo, es (posiblemente) más limpio usar el

verify(yourMock, times(0)).someMethod();

método en todas sus pruebas, cuando en otras pruebas lo usa para afirmar una cierta cantidad de ejecuciones como esta:

verify(yourMock, times(5)).someMethod();

Las alternativas son:

verify(yourMock, never()).someMethod();

Alternativamente, cuando realmente desee asegurarse de que un determinado objeto simulado NO sea llamado en absoluto, puede usar:

verifyZeroInteractions(yourMock)

Tenga en cuenta: verificarZeroInteractions(Object... simulacros) está en desuso. Desde la versión 3.0.1. El método ahora recomendado es:

verifyNoInteractions(yourMock)
fl0w avatar Oct 24 '2019 13:10 fl0w