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

Teste automatizado quando dependemos de uma API externa

Boa noite!

Nos casos de exemplo que o professor faz nas aulas, todas as informações necessárias para os testes estão dentro do próprio código. Entretanto, gostaria de saber qual a melhor prática quando precisamos implementar testes em uma funcionalidade que busca informações externas (Exemplo: API). A boa prática prevê que o teste em si bata em um Mock, ou seja, sempre devolverá o mesmo resultado e isso garantirá que o teste será executado? Por exemplo: Preciso testar uma funcionalidade que busca um endereço nos correios (API) de acordo com o CEP e no teste, preciso garantir que na resposta veio o campo "logradouro".

2 respostas
solução!

Oi Alex!

Tem duas abordagens para testar uma classe que utiliza algum serviço externo:

  1. Chamar o serviço de verdade
  2. Utilizar um mock para simular a chamada ao serviço

Chamar o serviço de verdade seria o ideal, pois o teste fica mais "realista" e confiável, entretanto o teste será mais lento para executar, pode ser mais difícil de escrever e dar manutenção, além de que o teste pode eventualmente falhar no caso do serviço externo estar fora do ar ou apresentando alguma lentidão.

Utilizar um mock evita esses problemas e você pode focar no seu código que deseja testar, garantindo que ele se comporta como deveria de acordo com o retorno do serviço externo.

Uma observação importante é que você não deve testar o serviço externo e sim o seu código, ou seja, no teste não deve checar se o serviço está retornando os dados corretamente, pois isso é responsabildiade do serviço externo em si e não da sua aplicação. Seu teste deve checar se a sua classe que utiliza o serviço externo está se comportando como o esperado, de acordo com o que foi devolvido por esse serviço.

Bons estudos!

Excelente professor. Muito obrigado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software