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