Libro de cocina de Mockito Verify

1. Información general

Este libro de cocina ilustra cómo usar Mockito verify en una variedad de casos de uso.

El formato del libro de cocina se centra en el ejemplo y es práctico: no se necesitan detalles ni explicaciones superfluos.

Vamos a burlarnos de una implementación de lista simple :

public class MyList extends AbstractList { @Override public String get(final int index) { return null; } @Override public int size() { return 0; } } 

2. El libro de cocina

verificar invocación simple en simulacro

List mockedList = mock(MyList.class); mockedList.size(); verify(mockedList).size();

verificar el número de interacciones con simulacro

List mockedList = mock(MyList.class); mockedList.size(); verify(mockedList, times(1)).size();

Verifique que no haya habido interacción con todo el simulacro.

List mockedList = mock(MyList.class); verifyZeroInteractions(mockedList);

verificar que no haya ocurrido interacción con un método específico

List mockedList = mock(MyList.class); verify(mockedList, times(0)).size();

Verifique que no haya interacciones inesperadas; esto debería fallar:

List mockedList = mock(MyList.class); mockedList.size(); mockedList.clear(); verify(mockedList).size(); verifyNoMoreInteractions(mockedList);

verificar el orden de las interacciones

List mockedList = mock(MyList.class); mockedList.size(); mockedList.add("a parameter"); mockedList.clear(); InOrder inOrder = Mockito.inOrder(mockedList); inOrder.verify(mockedList).size(); inOrder.verify(mockedList).add("a parameter"); inOrder.verify(mockedList).clear();

verificar que no se haya producido una interacción

List mockedList = mock(MyList.class); mockedList.size(); verify(mockedList, never()).clear();

verificar que se haya producido una interacción al menos una determinada cantidad de veces

List mockedList = mock(MyList.class); mockedList.clear(); mockedList.clear(); mockedList.clear(); verify(mockedList, atLeast(1)).clear(); verify(mockedList, atMost(10)).clear();

verificar la interacción con el argumento exacto

List mockedList = mock(MyList.class); mockedList.add("test"); verify(mockedList).add("test");

verificar la interacción con cualquier argumento flexible

List mockedList = mock(MyList.class); mockedList.add("test"); verify(mockedList).add(anyString());

verificar la interacción usando la captura de argumentos

List mockedList = mock(MyList.class); mockedList.addAll(Lists. newArrayList("someElement")); ArgumentCaptor argumentCaptor = ArgumentCaptor.forClass(List.class); verify(mockedList).addAll(argumentCaptor.capture()); List capturedArgument = argumentCaptor.
    
      getValue(); assertThat(capturedArgument, hasItem("someElement"));
    

3. Conclusión

Este formato es un experimento (estoy publicando algunos de mis libros de cocina de desarrollo interno sobre un tema determinado) en Google Guava, Hamcrest y ahora Mockito . El objetivo es tener esta información disponible en línea y agregarla cada vez que me encuentre con un nuevo ejemplo útil.

La implementación de todos estos ejemplos y fragmentos de código se puede encontrar en GitHub : este es un proyecto basado en Maven, por lo que debería ser fácil de importar y ejecutar tal como está.