Como testar APIs criadas com Express.js?
Testar APIs é essencial para garantir que endpoints funcionem corretamente e retornem os dados esperados. No Express.js, utilizamos Jest e Supertest para validar nossas APIs.
1. Instalando dependências
Antes de começar, instale os pacotes necessários:
npm install --save-dev jest supertest
2. Criando um servidor Express.js para testes
Crie um arquivo server.js
com uma API simples:
const express = require('express');
const app = express();
app.use(express.json());
app.get('/ping', (req, res) => {
res.json({ mensagem: 'pong' });
});
app.post('/soma', (req, res) => {
const { num1, num2 } = req.body;
if (typeof num1 !== 'number' || typeof num2 !== 'number') {
return res.status(400).json({ erro: 'Valores inválidos' });
}
res.json({ resultado: num1 + num2 });
});
module.exports = app;
3. Criando os testes
Agora, crie um arquivo server.test.js
para testar os endpoints:
const request = require('supertest');
const app = require('./server');
describe('Testando API Express.js', () => {
it('Deve responder pong ao acessar /ping', async () => {
const resposta = await request(app).get('/ping');
expect(resposta.status).toBe(200);
expect(resposta.body.mensagem).toBe('pong');
});
it('Deve retornar a soma correta ao acessar /soma', async () => {
const resposta = await request(app)
.post('/soma')
.send({ num1: 5, num2: 10 });
expect(resposta.status).toBe(200);
expect(resposta.body.resultado).toBe(15);
});
it('Deve retornar erro ao enviar valores inválidos', async () => {
const resposta = await request(app)
.post('/soma')
.send({ num1: 'cinco', num2: 10 });
expect(resposta.status).toBe(400);
expect(resposta.body.erro).toBe('Valores inválidos');
});
});
4. Executando os testes
No arquivo package.json
, adicione o seguinte script:
"scripts": {
"test": "jest"
}
Agora, execute os testes com:
npm test
Se tudo estiver correto, os testes passarão com sucesso!
Conclusão
Testar APIs no Express.js com Jest e Supertest permite validar endpoints de forma automatizada, garantindo que a API funcione corretamente e evitando problemas em produção.
Por que testar APIs no Express.js é essencial para qualidade e confiabilidade?
A automação de testes de API é fundamental para aplicações modernas. Empresas como Netflix, Uber e Spotify utilizam testes automatizados para garantir a qualidade de seus serviços.
Além de Jest e Supertest, ferramentas como Postman permitem criar suítes de testes manuais e automatizados para validar APIs em diferentes cenários.
Algumas aplicações:
- Garantia de que os endpoints retornam os dados esperados
- Detecção precoce de erros no backend
- Automação de testes para CI/CD
- Redução de falhas em produção
- Melhoria na confiabilidade da API
Dicas para quem está começando
- Use
Supertest
para testar APIs de forma automatizada. - Crie testes para cada cenário, incluindo erros esperados.
- Automatize testes no CI/CD para evitar regressões.
- Utilize mocks para simular respostas de serviços externos.
- Documente os casos de teste para facilitar a manutenção.
Contribuições de Lucas Fernandes