Como testar uma API Node.js com Jest e Supertest (guia prático)
Como implementei testes de integração para autenticação (login/signup) garantindo qualidade e confiabilidade.
Introdução
Testar fluxos de autenticação é essencial para garantir a confiabilidade de qualquer aplicação.
Neste artigo, mostro como implementei testes de integração para uma API Node.js, cobrindo cenários críticos como criação de usuário, login, validação de dados e tratamento de erros.
Os exemplos são baseados em um projeto real (Rangos), com foco em qualidade, validação de fluxos e prevenção de falhas em produção.
Objetivo
- Validar o fluxo de autenticação (signup/login)
- Garantir respostas HTTP corretas
- Cobrir cenários de erro
- Demonstrar uma abordagem prática de testes de API
Estrutura da API
A API possui dois endpoints principais:
- POST /signup → criação de usuário
- POST /login → autenticação de usuário
Testes de integração
Os testes foram implementados utilizando Jest e Supertest, simulando requisições HTTP reais contra a aplicação.
A ideia é validar não apenas o funcionamento esperado, mas também como a API se comporta em cenários de erro.
✔ Signup com sucesso
const response = await request(app).post("/signup").send({
email: "test@test.com",
password: "123456",
});
expect(response.status).toBe(201);
❌ Signup inválido
const response = await request(app).post("/signup").send({
email: "",
});
expect(response.status).toBe(422);
✔ Login com sucesso
const response = await request(app).post("/login").send({
email: "test@test.com",
password: "123456",
});
expect(response.status).toBe(200);
❌ Senha incorreta
expect(response.status).toBe(422);
expect(response.body.message).toBe("Incorrect password");
❌ Usuário inexistente
expect(response.status).toBe(404);
Abordagem de qualidade
Os testes não focam apenas em cenários de sucesso, mas principalmente em falhas e comportamentos inesperados.
Essa abordagem permite identificar problemas antes que cheguem à produção e aumenta a confiabilidade da aplicação.
Pensar nesses cenários é essencial para garantir que a API responda corretamente mesmo quando algo dá errado.
Possíveis melhorias
- Implementar autenticação com JWT
- Adicionar testes para tokens inválidos ou expirados
- Incluir testes de segurança (ex: rate limiting)
- Integrar com banco de dados real
Conclusão
Testar APIs vai além de verificar se tudo funciona — é garantir que falhas sejam tratadas corretamente.
Ao validar fluxos críticos como autenticação, é possível reduzir bugs em produção e construir aplicações mais robustas e confiáveis.
Relacionado
👉 Este exemplo foi baseado em um projeto real do meu portfólio
👉 Veja o projeto completo: rangos-api