0%
Dublês de teste com Mockito

Dublês com Mockito

Mock, spy, verificação de interação, e o teste que testa a si mesmo.

10-15 min

Dublês de teste com Mockito

Eis um teste que passa, conta na cobertura e não detecta absolutamente nada:

@Test
void le_service_retourne_le_client() {
    when(depot.parId(7L)).thenReturn(new Client(7L, "Dupont"));

    Client client = service.trouver(7L);

    assertThat(client.nom()).isEqualTo("Dupont");
}

Você declarou que o repositório devolve "Dupont" e depois verificou que "Dupont" sai dele. O único comportamento testado é o do Mockito. Substitua a implementação de service.trouver por return depot.parId(id);, removendo toda a lógica de negócio que ela continha: o teste continua verde. É o defeito mais comum das suítes que abusam de dublês, e é indetectável pelo medidor de cobertura, que exibirá orgulhosamente 100 % no método.

O Mockito é uma excelente ferramenta, mal utilizada por padrão. O reflexo "uma classe testada, todos os colaboradores simulados" produz testes que descrevem a estrutura interna do código em vez do seu comportamento: cada mudança de responsabilidade entre duas classes quebra dez testes sem que nenhum bug tenha sido introduzido. Esta lição estabelece uma regra simples para decidir quando um dublê se justifica e mostra como verificar interações sem se encurralar.

Comentários

Os comentários são alimentados pelo GitHub Discussions

Conecte-se com o GitHub para participar da discussão

Link copiado!