1
resposta

Esse teste na minha opinião foi falho, veja meu código e os comentários com as dúvidas

@Test
    public void deveAtualizarLeiloesEncerrados(){

        RepositorioDeLeiloes  leilaoDaoMockado =   mock(LeilaoDao.class);

        when(leilaoDaoMockado.correntes()).thenReturn(listaLeiloesAntigos);

        listaLeiloesAntigos.stream().forEachOrdered(Leilao::encerra);

        List<Leilao> listaAtualizadaComLeiloesEncerrados = listaLeiloesAntigos.stream().peek(l -> l.isEncerrado())
                                                                                       .collect(Collectors.toList());

        listaAtualizadaComLeiloesEncerrados.forEach(l -> leilaoDaoMockado.atualiza(l));


        EncerradorDeLeilao encerrador = new EncerradorDeLeilao(leilaoDaoMockado);
        encerrador.encerra();

        assertEquals(2, encerrador.getTotalEncerrados());
        assertTrue(listaAtualizadaComLeiloesEncerrados.get(0).isEncerrado());
        assertTrue(listaAtualizadaComLeiloesEncerrados.get(1).isEncerrado());

        /*
            Não concordo com a resolução do instrutor, pois a sequência esta desordenada já que há um método com nome "encerra" 
            pertencente a classe "EncerradorDeLeilao.java" e também um método:

            public void encerra() {  this.encerrado = true; } que pertence a classe Leilao.java

            Além de ser uma lista de leilões a condição FOR não segue o ciclo de uma lista, a minha solução foi de
            resolver com Java 8, caso tenha uma solução melhor, favor inserir aqui ou enviar para meu e-mail:
            tibaestiago@gmail.com     
        */
    }
1 resposta

Esse post é relativo a este né https://cursos.alura.com.br/forum/topico-o-codigo-correto-de-testes-seria-dessa-forma-73552 .