Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida - Uso de mock em testes de unidade

Boa noite,

Estou com uma dúvida em relação aos testes de unidade.

Abaixo temos um test do curso de mockito:

@Test
    public void deveGerarPagamentoParaUmLeilaoEncerrado() {

        RepositorioDeLeiloes leiloes = mock(RepositorioDeLeiloes.class);
        RepositorioDePagamentos pagamentos = mock(RepositorioDePagamentos.class);

        Leilao leilao = new CriadorDeLeilao()
            .para("Playstation")
            .lance(new Usuario("José da Silva"), 2000.0)
            .lance(new Usuario("Maria Pereira"), 2500.0)
            .constroi();

        when(leiloes.encerrados()).thenReturn(Arrays.asList(leilao));

        // aqui passamos uma instância concreta de Avaliador
        GeradorDePagamento gerador = 
            new GeradorDePagamento(leiloes, pagamentos, new Avaliador());
        gerador.gera();

        ArgumentCaptor<Pagamento> argumento = ArgumentCaptor.forClass(Pagamento.class);
        verify(pagamentos).salvar(argumento.capture());
        Pagamento pagamentoGerado = argumento.getValue();
        assertEquals(2500.0, pagamentoGerado.getValor(), 0.00001);
    }

Um teste de unidade testa, em geral, o comportamento de uma classe. No exemplo acima ele está testando a classe GeradorDePagamentos.

Minha dúvida é: ele fez o mock de todas as classes que são passadas como parâmetro. No caso das outras classes (leilão e usuários), elas não deveriam ter sido mockadas também?

Muito obrigado!!

1 resposta
solução!

Oi Yuri, tudo bem ?

Cara a idéia do mock é simularmos comportamentos que podem dar interferência em nosso teste, por exemplo, no curso nós estamos simulando o banco de dados, justamente porque os dados que podem vir para cada teste pode interferir e muito no resultado, por isso nós mockamos para poder simular o comportamento, ensinando como ele deve se comportar, nisso conseguimos verificar se nossa lógica, o que de fato estamos testando está correto.

Espero ter ajudado.

Abraços