Considere o seguinte trecho de código em Java, utilizando JU...

Próximas questões
Com base no mesmo assunto
Q3291020 Programação
Considere o seguinte trecho de código em Java, utilizando JUnit e Mockito para testar o comportamento de uma classe de serviço. 

Captura_de tela 2025-04-11 153209.png (815×715)

Ao se executar o código em condições ideais, o teste 
Alternativas

Comentários

Veja os comentários dos nossos alunos

Introdução a Testes com JUnit e Mockito

O teste apresentado utiliza JUnit e Mockito para validar o comportamento de uma classe de serviço. O código mostra um teste que configura um mock do repositório para retornar um pedido quando o método buscarPorId é chamado, e também configura o mock do pedido para retornar false no método isValido(). O teste então chama o método processarPedido e verifica se o resultado é "Pedido processado com sucesso".

Resolução

Analisando o código fornecido na imagem, podemos observar a seguinte estrutura:

Letra A está incorreta. O método buscarPorId do repositório é chamado implicitamente durante a execução do processarPedido. O verify do Mockito é usado para validar interações, mas não é obrigatório para o funcionamento do teste.

Letra B está correta. O mock do pedido foi configurado para retornar false no método isValido() através da linha Mockito.when(pedidoMock.isValido()).thenReturn(false);. No entanto, o teste espera que o resultado seja "Pedido processado com sucesso", que só ocorre quando isValido() retorna true. Como o mock retorna false, a condição pedido.get().isValido() será falsa, fazendo com que o método retorne "Falha ao processar pedido" em vez de "Pedido processado com sucesso".

Letra C está incorreta. O código da classe PedidoService está correto e considera adequadamente o caso em que isValido() retorna false, retornando "Falha ao processar pedido" nessa situação.

Letra D está incorreta. A string de comparação no assertEquals está correta para o cenário que o teste pretende validar (caso de sucesso). O problema não está na string esperada, mas sim na configuração do mock.

Letra E está incorreta. O método buscarPorId do repositório está configurado corretamente para retornar um Optional contendo o pedido mock. O problema não está na configuração do repositório, mas sim na configuração do mock do pedido.

O teste falhará porque há uma inconsistência entre a configuração do mock (que faz isValido() retornar false) e a expectativa do teste (que espera o resultado de sucesso). Para que o teste passe, o mock deveria ser configurado com thenReturn(true) ou a expectativa deveria ser alterada para "Falha ao processar pedido".

Resposta: B - Perplexity

Gabarito B

A - buscarporId() foi chamado sim, veja:

Mockito.when(pedidoRepository.buscarPorId("123")).thenReturn(Optional.of(pedidoMock)); 

C - "está correto", acho que queriam dizer "terá sucesso". Isso é pegadinha. Quem lesse essa alternativa rapidamente e não prestasse atenção poderia cair! Se executar o teste ele FALHARÁ ao invés de sucesso.

Além de falar que "código da classe PedidoService está com ERRO na validação IF", o código do IF esta escrito de forma CORRETA!

D - Acho que cabe recurso, pois essa alternativa é ambígua.

E - Veja no método processarPedido() da classe PedidoService que o método buscarPorid() retorna um OPTIONAL.

No teste é declarado Mockito.when(pedidoRepository.buscarPorId("123")).thenReturn(Optional.of(pedidoMock)); 

, ou seja, esta retornando um optional normalmente pois o método Optional.of(value): Cria um Optional

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo