2
respostas

EnviadorDeEmails não deve ser chamado, caso ocorra alguma exceção

Fazemos um teste que ocorrendo um erro ao salvar não devemos enviar o e-mail (enviadorDeEmails - não deve ser chamado), com isso lançamos uma exceção do tipo RuntimeException para simular um erro, mas o que de fato faz com que esse método não seja chamado no método finalizarLeiloesExpirados ?

    @Test
    void naoDeveriaenviarEmailParaVencedorDoLeilaoEmCasoDeErroAoEncerrarOLeilao() {
        List<Leilao> leiloes = leiloes();

        Mockito.when(leilaoDao.buscarLeiloesExpirados()).thenReturn(leiloes);

        Mockito.when(leilaoDao.salvar(Mockito.any())).thenThrow(RuntimeException.class);

        try {
            service.finalizarLeiloesExpirados();
            Mockito.verifyNoInteractions(enviadorDeEmails);//verifica se um método não foi chamado
        } catch (Exception e) {
        }
    }
2 respostas

Oi Gleidson,

O erro lnaçado no teste foi apenas parar simular um problema ao salvar o registro no banco de dados. Um exemplo de erro que pode acontecer seria o banco de dados cair(ficar fora do ar) bem na hora de salvar, e com isso o Hibernate vai lançar uma exception ao tentar se conectar no banco.

Bons estudos!

Entendi, mas como o Hibernate faz isso? Consigo acessar esse código do Hibernate que lança uma exception?