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) {
}
}