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

[Dúvida] método deveriaChamarValidadoresDeAdocaoAoSolicitar

Oi, pessoal! Fiquei com uma dúvida neste teste:

Eu entendi que estou chamando dois validadores Mocks que adicionei na lista que é Spy, mas como que eles estão sendo chamados? Pois o método solicitar chama os validadores que estão lá no método, como que o código entende que os validadores foram chamados sendo que são validadores que eu adicionei apenas no teste?

2 respostas
solução!

Oi, Miguel!

Entendo sua dúvida sobre como os validadores que você adicionou no teste estão sendo chamados pelo método solicitar(). Vamos esclarecer isso com mais detalhes.

Quando você usa a anotação @Spy no Mockito, você está criando um objeto real que mantém os comportamentos originais, mas que também pode ser monitorado pelo Mockito. No seu caso, você está criando uma lista validacoes que é um Spy e adicionando dois validadores mocks (validador1 e validador2) a essa lista.

Aqui está o passo a passo do que está acontecendo:

  1. Criação da Lista Spy:

    @Spy
    private List<ValidacaoSolicitacaoAdocao> validacoes = new ArrayList<>();
    

    Isso cria uma lista real (ArrayList) que o Mockito pode monitorar.

  2. Adição dos Validadores Mocks:

    validacoes.add(validador1);
    validacoes.add(validador2);
    

    Você adiciona os validadores mocks à lista validacoes.

  3. Chamada do Método solicitar: Quando você chama service.solicitar(dto), dentro desse método, há uma lógica que percorre a lista de validadores e chama o método validar(dto) para cada um deles:

    for (ValidacaoSolicitacaoAdocao validador : validacoes) {
        validador.validar(dto);
    }
    
  4. Verificação com Mockito: Como você adicionou os validadores mocks à lista validacoes, o Mockito pode verificar se os métodos validar foram chamados:

    BDDMockito.then(validador1).should().validar(dto);
    BDDMockito.then(validador2).should().validar(dto);
    

O código entende que os validadores foram chamados porque, no momento em que você adiciona os mocks à lista validacoes, o método solicitar está percorrendo essa lista e chamando o método validar para cada validador presente nela. Como os validadores são mocks, o Mockito pode rastrear essas chamadas e verificar se elas ocorreram.

Espero ter ajudado e bons estudos!

Super claro, valeu!