Como testar APIs criadas com Express.js?

Testar APIs no Express.js permite validar endpoints, garantir respostas corretas e evitar falhas no backend.

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.

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

Compartilhe este tutorial: Como testar APIs criadas com Express.js?

Compartilhe este tutorial

Continue aprendendo:

Como consumir uma API externa dentro do Node.js?

O Node.js permite consumir APIs externas para obter dados, enviar informações e integrar serviços de terceiros.

Tutorial anterior

Como debugar aplicações Node.js e Express.js?

O debug no Node.js e Express.js pode ser feito com console.log, debugger do VS Code e Node Inspector para identificar problemas no código.

Próximo tutorial