1
resposta

Como simular valor de uma variável local do método testado?

Olá, não fiz a otimização da consulta no banco de dados "countByTutorIdAndStatus"

 public void validar(SolicitacaoAdocaoDto dto) {
        List<Adocao> adocoes = adocaoRepository.findAll();
        Tutor tutor = tutorRepository.getReferenceById(dto.idTutor());
        for (Adocao a : adocoes) {
            int contador = 0;
            if (a.getTutor() == tutor && a.getStatus() == StatusAdocao.APROVADO) {
                contador = contador + 1;
            }
            if (contador == 5) {
                throw new ValidacaoException("Tutor chegou ao limite máximo de 5 adoções!");
            }
        }
    }

nesse caso, como faria para acessar a variável "contador" local do método e simular na classe de teste?

1 resposta

Oi Vinicius!

No teste automatizado você não deve "acessar" as informações de dentro do método sendo testado, mas sim simular os possíveis comportamento do método.

Ao escrever testes para um determinado método, você deve ignorar a implementação dele e focar apenas no comportamento. Por exemplo, nessa classe de validação do curso são 3 possibilidades de comportamento:

  • Tutor com nenhuma adoção: Não deve lançar exception
  • Tutor com menos de 5 adoções (1 ou 2 ou 3 ou 4): Não deve lançar exception
  • Tutor com exatamente 5 adoções: Deve lançar exception

Seus testes devem simular essas situações, independente do algitmo interno do método sendo testado, pois o foco do teste é no comportamento e não na implementação.

Bons estudos!