Executando verificação de segurança...
1

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.

Carregando publicação patrocinada...
2

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.

1
2

Para implementar você precisa ter alguma lógica a ser testada (métodos ou funções por exemplo). No seu projeto vc não tem isso. Seus objetos User, Transaction, Cycle,... são apenas dados. E você trafega eles direto para os endpoints. Não faz nenhum tipo de validação ou verificação em relação a integridade/validade deles.
Fazer os testes é simples. Você implementou os de integração usando uma ferramenta de teste automatizado. Os testes unitários são basicamente a mesma coisa, mas você vai validar apenas a lógica de uma função/objeto e não um fluxo, como está fazendo.
Você precisa identificar o que testar no seu código. Olhar os requisitos e regras de negócios para achar o que pode ser testado ali.
Você disse que é um trabalho de faculdade então na solicitação deve ter algumas regras e condições a serem seguidas, como por exemplo que caracteriza uma transação válida.
Apenas olhando o código identifico a senha que vc verifica se é valida ou inválida. Essa lógica pode ser isolada e ter um teste unitário para ela.

2

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).