Dúvidas sobre teste unitário e integração.
Tava fazendo meu projeto para um trabalho da faculdade e chegou o momento de fazer os testes unitários e integração, porem não tenho a menor ideia se o que eu fiz está certo (os teste realizados são valido). Um colega meu falou que os testes que eu fiz eram e2e, o que não atende ao requisitos do trabalho.
Esse é o link do repositório: https://github.com/GabrieldbSouza/Personal-Finance-Management/tree/main/server%2Ftests
Se alguém puder explicar como é feito de forma correta teste unitário e integração.
Os testes que você montou da rota são testes de integração. Para serem testes e2e deveriam envolver o client no caso de testes, o que não acontece pois você testa apenas os endpoints. Do meu ponto de vista, seus testes de modelo são dispensáveis. Ali você apenas verifica se o valor atribuído a uma propriedade está naquela propriedade depois de atribuída. Não exercitam nenhuma lógica de negócios já que seus modelos não possuem nenhuma lógica de dominio.
O problema é que toda a sua lógica de negócio está acoplada na camada de apresentação das rotas, dessa forma você não consegue testar pequenos trechos, como por exemplo uma função que passando os dados do usuário, ela valida e adiciona no banco.
Pra isso voce vai precisar desacoplar a lógica, podendo usar uma camada de serviço, então a sua arquitetura irá receber as requisições nas rotas e passar pra função desejada, dessa forma você consegue testar se aquela função faz o que é esperado que ela faça, independente de onde você a chamou (através de uma rota ou um teste unitário).