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á.