Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Estou com dúvida no curso de Testando comportamento através de mocks, no exercício do capítulo Simulando comportamentos com Mock Objects.

Legal, entendi o teste abaixo, mas dentro do metodo encerra, existe um atualiza(), fui debugar o código, pelo que entendi ele cria o próprio mock do metodo atualiza()? como isso funciona?

@Test
    public void deveEncerrarLeiloesComMaisDeUmaSemana(){

        Calendar antiga = Calendar.getInstance();
        antiga.set(1999, 1, 22);

        Leilao leilao1 = new CriadorDeLeilao().para("Casa").naData(antiga).constroi();
        Leilao leilao2 = new CriadorDeLeilao().para("Carro").naData(antiga).constroi();

        List<Leilao> leiloesCorrentes = Arrays.asList(leilao1, leilao2);


        LeilaoDao leilaoDaoFalso = mock(LeilaoDao.class);
        when(leilaoDaoFalso.correntes()).thenReturn(leiloesCorrentes);


        EncerradorDeLeilao encerradorDeLeilao = new EncerradorDeLeilao(leilaoDaoFalso);
        encerradorDeLeilao.encerra();

        assertThat(encerradorDeLeilao.getTotalEncerrados(), equalTo(2));
        assertTrue(leilao1.isEncerrado());
        assertTrue(leilao2.isEncerrado());




    }
3 respostas

Up..

solução!

Oi Felipe,

Quando você não especifica um método do mock (usando when() ou coisa do tipo), ele simplesmente "ignora" a chamada. Ou seja, ela acontece, mas o mock não faz nada.

Entendeu?

Olá Maurício,

Entendi, então se houvesse qualquer outra chamada do meu DaoFalso, seja salva() ou encerrados() internamente na chamada do meu método do meu EncerradorDeLeilao, eu teria que especificar como o meu mock se comportaria em relação a estes métodos. Correto?