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

Dúvidas sobre a aplicação do conceito de testes unitários em API's RESTful usando Mocks

Olá Professor!

Novamente, uma pulga atrás da orelha consome minha alma...

Talvez não se trate tanto de uma dúvida, mas de uma opinião...

Vamos lá.

Sobre testes unitários com mocks ...

Considerando uma API RESTful (Symfony) de alimentos "hipotética", que tenha CRUD completo. Tal serviço só teria uma regra de negócio aplicada em sua busca: Quando não for encontrado o alimento (busca feita filtrando pelo nome no caso ), ele deve requisitar esse alimento de um serviço externo (Outra API) e inseri-lo na base local, finalizando então a resposta a busca com o novo alimento cadastrado ou um corpo sem conteúdo, caso este não exista nem no serviço externo.

Neste contexto, não consigo aceitar que esteja realizando testes "unitários", mas sim, testes de integração, pois dependeria de um serviço externo para tal.

O meu próprio serviço inclusive, é uma API, no qual partiria sempre de um principio de que tenho uma requisição, o que me leva a pensar que o teste do meu CRUD por exemplo, seria um teste "End to End".

Qual a sua opinião sobre testes unitários em API's? Você julga correto a interpretação que apontei acima? Mocks também se encaixam neste contexto?

1 resposta
solução!

Fala, Alisson.

Se você precisa testar a integração entre 2 sistemas, sim, é um teste de integração.

Mas se você utiliza um dublê de testes para simular o comportamento do sistema externo, então não é um teste de integração, visto que você só estaria testando a unidade que faz uso desse sistema, entende?

Já um teste "End to End" testa todo um fluxo da aplicação. Ex.:

Realizar login com um usuário e listar os produtos comprados por ele.

Isso sim seria um teste "End to End". Agora, tendo um usuário previamente logado através do código, simplesmente bater no banco e garantir que os produtos comprados por ele são retornados corretamente, seria um teste de integração.

Espero ter clareado as coisas, e não complicado mais ainda. rsrsrs