Mockito Quando / Então Livro de Receitas
1. Visão geral
Este livro de receitas mostrahow to use Mockito to configure behavior em uma variedade de exemplos e casos de uso.
Oformat of the cookbook is example focusede prático - sem detalhes estranhos e explicações necessárias.
E, claro, se você quiser saber mais sobre como testar bem com o Mockito, dê uma olhada emthe other Mockito articles here.
Leitura adicional:
Livro de receitas do Mockito Verifique
Mockito Verify exemplos, uso e melhores práticas.
Mockito - Usando espiões
Fazendo bom uso de espiões em Mockito e como os espiões são diferentes de zombarias.
Métodos de simulação de Mockito
Este tutorial ilustra vários usos dos métodos de simulação estáticos padrão da API do Mockito.
Teremos a implementação democking a simple list - a mesma implementação que usamos no livro de receitas anterior:
public class MyList extends AbstractList {
@Override
public String get(final int index) {
return null;
}
@Override
public int size() {
return 1;
}
}
2. Livro de receitas
configurar comportamento de retorno simples para simulação
MyList listMock = Mockito.mock(MyList.class);
when(listMock.add(anyString())).thenReturn(false);
boolean added = listMock.add(randomAlphabetic(6));
assertThat(added, is(false));
configurar o comportamento de retorno para simulação de uma forma alternativa
MyList listMock = Mockito.mock(MyList.class);
doReturn(false).when(listMock).add(anyString());
boolean added = listMock.add(randomAlphabetic(6));
assertThat(added, is(false));
configure o mock para lançar uma exceção em uma chamada de 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 o comportamento de um método com tipo de retorno void - para lançar uma exceção
MyList listMock = Mockito.mock(MyList.class);
doThrow(NullPointerException.class).when(listMock).clear();
listMock.clear();
configurar o comportamento de várias chamadas
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 o comportamento de um espião
MyList instance = new MyList();
MyList spy = Mockito.spy(instance);
doThrow(NullPointerException.class).when(spy).size();
spy.size(); // will throw the exception
configure o método para chamar o método real subjacente em uma simulação
MyList listMock = Mockito.mock(MyList.class);
when(listMock.size()).thenCallRealMethod();
assertThat(listMock.size(), equalTo(1));
configurar chamada de método simulado com resposta 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. Conclusão
Este formato é um experimento - estou publicando alguns dos meus livros de receitas de desenvolvimento interno sobre um determinado tópico - emGoogle Guava,Hamcrestenow Mockito. O objetivo é ter essas informações prontamente disponíveis on-line - e adicioná-las sempre que encontrar um novo exemplo útil.
A implementação de todos esses exemplos e trechos de códigocan be found over on GitHub - este é um projeto baseado em Maven, portanto, deve ser fácil de importar e executar como está.