Mockito Quando/Então Livro de Receitas

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.

Read more →

Mockito - Usando espiões

Fazendo bom uso de espiões em Mockito e como os espiões são diferentes de zombarias.

Read more →

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.

Read more →

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