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

Testes em controllers são considerados unitários ou de integração?

Se você implementa um teste que faz uma requisição para um controller que aceita um post em /xpto, teoricamente -do meu ponto de vista- estou fazendo as duas coisas, pois estou testando a regra de aceitar essa requisição e retornar algo (se for REST retorna um json), e se ele testa a regra do controller quer dizer que ele também precisa ir no banco de dados salvar a informação e retonar além do status, um objeto que já tem até um ID agora.

Tá certo esse pensamento? Eu deveria separar esse trabalho entre testar a requisição e mockar o banco pra depois testar a integração separado?

eu comitei alguns testes no repositorio relacionado ao desafio de back end da alura e gostaria de uma opnião sobre o que estou fazendo de errado e o que eu deveria fazer pra ficar melhor. Eles estão bem parecidos já que o teste não só trata as requisições como também as validações de atributos que chegam no DTO, e é daqui que surgiu a dúvida, pois parece que eu tô testando a requisição, a validação e de brinde verificar se tá voltando do banco com a informação correta e, embora seja legal ver os testes passando, fica parecendo que eu tô testando errado.

https://github.com/FariaJvP/alura-backend-challenge/blob/cadastra-video/videoapi/src/test/java/br/com/alura/videoapi/funcionalidades/cadastravideo/CadastraVideoControllerTest.java

Obrigado e tmj

2 respostas

subindo de novo

solução!

Oi Joao,

Isso vai depender de como o teste foi implementado.

Se o teste foca apenas no controller em si, mockando todas as suas dependencias, entao seria um teste de unidade mesmo.

Mas no seu caso voce esta testando com os recursos do Spring Boot, entao é um teste de integracao mesmo, pois o teste vai subir o servidor, disparar uma requisicao para a API e chamar a classe controller que por sua vez vai chamar todas as dependencias dela.

Bons estudos!

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