1
resposta

Solução

public class EncerradorDeLeilaoTeste {

    private RepositorioDeLeiloes daoFalso;
    private Carteiro carteiroFalso;
    private EncerradorDeLeilao encerrador;

    @Before
    public void before() {
        this.daoFalso = mock(RepositorioDeLeiloes.class);
        this.carteiroFalso = mock(Carteiro.class);
        this.encerrador = new EncerradorDeLeilao(daoFalso, carteiroFalso);
    }

    @Test
    public void naoDeveChamarCarteiroCasoDaoFalhe() {

        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();

        when(daoFalso.correntes()).thenReturn(Arrays.asList(leilao1, leilao2));

        doThrow(new RuntimeException()).when(daoFalso).atualiza(leilao1);
        doThrow(new RuntimeException()).when(daoFalso).atualiza(leilao2);

        encerrador.encerra();

        verify(carteiroFalso, never()).envia(leilao1);
        verify(carteiroFalso, never()).envia(leilao2);

    }
}
1 resposta

Perfeito ITALO