Quando usamos mocks, a execução deve simular o mundo real. Sendo assim, a quantidade de leilões encerrados deveria ser 1, no exemplo abaixo.
@Test void deveContinuarAExecucaoMesmoQuandoDaoFalha(){
Calendar antiga = Calendar.getInstance();
antiga.set(1999, 1 ,20);
Leilao leilao1 = new CriadorDeLeilao().para("TV de plasma").naData(antiga).constroi();
Leilao leilao2 = new CriadorDeLeilao().para("Geladeira").naData(antiga).constroi();
LeilaoDao leilaoDao = mock(LeilaoDao.class);
when(leilaoDao.correntes()).thenReturn(Arrays.asList(leilao1, leilao2));
doThrow(new RuntimeException()).when(leilaoDao).atualiza(leilao1);
EnviadorDeEmail carteiro = mock(EnviadorDeEmail.class);
EncerradorDeLeilao encerradorDeLeilao = new EncerradorDeLeilao(leilaoDao, carteiro);
encerradorDeLeilao.encerra();
verify(leilaoDao, times(1)).atualiza(leilao2);
verify(carteiro, times(1)).envia(leilao2);
assertEquals(1, encerradorDeLeilao.getTotalEncerrados());
// assertTrue(leilao1.isEncerrado());
assertTrue(leilao2.isEncerrado());
}
No entanto, o teste falha, indicando que a quantidade de leilões encerrados é 2.
Confere esse comportamento?