Dublês com Mockito
Mock, spy, verificação de interação, e o teste que testa a si mesmo.
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