O Dinhericiar tem o objetivo de ajudar as pessoas a gerenciar suas finanças pessoais.
Eu também aproveitei a ideia para aplicar tudo que venho estudando a nível técnico nos últimos anos conforme comentei abaixo.
A Clean Architecture (arquitetura limpa) permite criar aplicações escaláveis, de fácil manutenção e de baixo acoplamento, tornando-a flexível o suficiente para trocar qualquer dependência / tecnologia externa de forma segura, sem a necessidade de modificar o alicerce da aplicação com as regras de negócio da problemática que está sendo resolvida.
A clássica pirâmide de testes prioriza testes unitários tanto para economizar dinheiro e priorizar a performance dos testes, mas essa abordagem costuma ser problemática por alguns motivos que vivenciei e que também já foram expostos pela comunidade:
- Com um foco em testes unitários, eu deixo em segundo plano validar como uma unidade funciona trabalhando em conjunto com outras unidades (o que é de fato como o usuário utiliza a aplicação).
- Abordagens como InMemoryTestDatabase ajudam a escrever os testes unitários, mas várias vezes em minhas próprias experiências, com tantos mocks e distanciação dos serviços realmente utilizados em produção, minhas aplicações se encontrava com diversos erros mesmo com todos os testes passando.
- O tempo é muito precioso. Ter gastando tanto esforço com testes unitários e ainda assim encontrar diversos erros nos meus projetos me deixou frustrado com o tempo que gastei.
O peso em testes de integração é uma abordagem utilizada em algumas aplicações do Spotify e indicada pelo CEO da Vercel. No troféu de testes, há justamente esse foco, onde é priorizado testar o conjunto das unidades funcionando e consequentemente, anulando diversos mocks, trazendo os serviços reais que são realmente usados pelos usuários.
No Dinhericiar, esse é um atual preview da cobertura dos testes de integração (13/10/2024):
- NestJS
- Drizzle ORM (finalmente posso escrever SQL puro)
- Vitest
Você precisa ter duas principais dependências instaladas:
- Node.js 20.5.1 (ou qualquer versão superior)
- Docker 24.0.6 (ou qualquer versão superior)
- PNPM 9.1.1 (ou qualquer versão superior) - opcional
# git
git clone https://github.com/Leo-Henrique/dinhericiar-back-end.git
# GitHub CLI
gh repo clone Leo-Henrique/dinhericiar-back-end
pnpm install
pnpm services:dev:up
pnpm migrate:dev
pnpm start:dev
# unitários
pnpm test:unit
# integração
pnpm test:integration
# cobertura dos testes de integração
pnpm test:integration:coverage