Black November

ATÉ 50% OFF

TÁ ACABANDO!

0 dias

0 horas

0 min

0 seg

1
resposta

O método Mockito.verifyNoInteractions é realmente executado?

Ao executar o teste

    @Test
    void naoDeveriaEnviarEmailParaVencedorDoLeilaoEmCasoDeErroAoFinalizarLeilao() {
        List<Leilao> leiloes = this.leiloes();
        Mockito.when(this.leilaoDao.buscarLeiloesExpirados()).thenReturn(leiloes);
        Mockito.when(this.leilaoDao.salvar(Mockito.any())).thenThrow(RuntimeException.class);

        try {
            this.service.finalizarLeiloesExpirados();
            Mockito.verifyNoInteractions(this.enviadorDeEmails);
        } catch (Exception e) { }
    }

A linha Mockito.verifyNoInteractions(this.enviadorDeEmails); não é executada quando o Mockito lança a exceção no método salvar. O teste passa, mas sem efetivamente testar a "não interação", pois a execução pula para o "catch". O correto me parece ser colocar a linha Mockito.verifyNoInteractions(this.enviadorDeEmails); após o try/catch ou num finally. Caso algum DEV coloque o envio de e-mail ANTES do método salvar, o teste ainda sim passará, mas o bug ocorrerá pois o teste está com esta falha. Está correto este raciocínio?

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta

Oi Felippe,

Verdade! vacilei na explicacao e nao me atentei a esse detalhe :D

Bons estudos!