1. Información general
Este libro de cocina muestra cómo usar Mockito para configurar el comportamiento en una variedad de ejemplos y 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.
Y, por supuesto, si desea obtener más información sobre cómo probar bien con Mockito, eche un vistazo a los otros artículos de Mockito aquí.
Vamos a burlarnos de una implementación de lista simple , la misma implementación que usamos en el libro de cocina anterior:
public class MyList extends AbstractList { @Override public String get(final int index) { return null; } @Override public int size() { return 1; } }
2. Libro de cocina
configurar un comportamiento de devolución simple para simulacros
MyList listMock = Mockito.mock(MyList.class); when(listMock.add(anyString())).thenReturn(false); boolean added = listMock.add(randomAlphabetic(6)); assertThat(added, is(false));
configurar el comportamiento de devolución para simulacro de una manera alternativa
MyList listMock = Mockito.mock(MyList.class); doReturn(false).when(listMock).add(anyString()); boolean added = listMock.add(randomAlphabetic(6)); assertThat(added, is(false));
configurar mock para lanzar una excepción en una llamada a un método
@Test(expected = IllegalStateException.class) public void givenMethodIsConfiguredToThrowException_whenCallingMethod_thenExceptionIsThrown() { MyList listMock = Mockito.mock(MyList.class); when(listMock.add(anyString())).thenThrow(IllegalStateException.class); listMock.add(randomAlphabetic(6)); }
configurar el comportamiento de un método con tipo de retorno nulo - para lanzar una excepción
MyList listMock = Mockito.mock(MyList.class); doThrow(NullPointerException.class).when(listMock).clear(); listMock.clear();
configurar el comportamiento de múltiples llamadas
MyList listMock = Mockito.mock(MyList.class); when(listMock.add(anyString())) .thenReturn(false) .thenThrow(IllegalStateException.class); listMock.add(randomAlphabetic(6)); listMock.add(randomAlphabetic(6)); // will throw the exception
configurar el comportamiento de un espía
MyList instance = new MyList(); MyList spy = Mockito.spy(instance); doThrow(NullPointerException.class).when(spy).size(); spy.size(); // will throw the exception
configurar el método para llamar al método real subyacente en un simulacro
MyList listMock = Mockito.mock(MyList.class); when(listMock.size()).thenCallRealMethod(); assertThat(listMock.size(), equalTo(1));
configurar llamada de método simulado con respuesta personalizada
MyList listMock = Mockito.mock(MyList.class); doAnswer(invocation -> "Always the same").when(listMock).get(anyInt()); String element = listMock.get(1); assertThat(element, is(equalTo("Always the same")));
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 como está.