No cenário em rápida evolução das APIs, as equipes precisam de duas coisas: feedback rápido no nível do código e validação confiável de ponta a ponta em todos os ambientes. O Supertest entrega o primeiro — asserções HTTP extremamente rápidas para serviços Node.js. E quando você estiver pronto para colaborar entre funções, executar testes de cenário, simular dependências e publicar documentação, uma plataforma de teste de API como o Apidog completa o quadro. Este guia oficial e objetivo explica como usar o Supertest para testar APIs, onde ele se destaca e como combiná-lo com o Apidog para acelerar a entrega com confiança.
Apidog
O Que É Supertest?
Supertest é uma biblioteca Node.js leve para testar servidores HTTP. Ele é construído sobre o superagent e permite escrever asserções expressivas contra códigos de status, cabeçalhos e corpos de resposta — sem a necessidade de clientes externos. É ideal quando você:
- Precisa de testes rápidos e determinísticos durante o desenvolvimento
- Quer testar controladores/roteadores próximos ao código
- Prefere uma pegada de dependência mínima e tempo de execução rápido
- Por que as equipes gostam do Supertest entre as ferramentas modernas de teste de API:
- Asserções simples e encadeáveis com
.expect()
- Funciona com qualquer executor de testes (Jest, Mocha, Vitest)
- Aceita tanto uma URL em execução quanto um aplicativo
http.Server
/Express em processo - Integra-se facilmente com ferramentas de CI e cobertura de código
Quando você precisar de colaboração, governança de conformidade de API, orquestração de ambiente e testes visuais, você complementará o Supertest com uma plataforma de teste de API como o Apidog. O restante deste artigo mostra como fazer ambos.
Instalar e Configurar o Supertest
Você pode instalar o Supertest em minutos. Use npm, pnpm ou yarn:
# npm npm install --save-dev supertest jest
# pnpm pnpm add -D supertest jest
# yarn
yarn add -D supertest jest
Uma API Express mínima (app.js
):
const express = require('express');
const app = express();
app.get('/greet', (req, res) => {
const name = req.query.name || 'World';
res.json({ message: `Hello, ${name}!` });
});
module.exports = app;
Um teste simples (app.test.js
) usando Supertest + Jest:
const request = require('supertest');
const app = require('./app');
describe('GET /greet', () => {
it('greets anonymously', async () => {
const res = await request(app)
.get('/greet')
.expect('Content-Type', /json/)
.expect(200);
expect(res.body.message).toBe('Hello, World!');
});
it('greets by name', async () => {
const res = await request(app)
.get('/greet?name=Alice')
.expect('Content-Type', /json/)
.expect(200);
expect(res.body.message).toBe('Hello, Alice!');
});
});
Atualize package.json
para executar testes:
{
"scripts": {
"test": "jest"
}
}
Execute seus testes:
npm test
Se você preferir Mocha ou Vitest, o Supertest funciona da mesma forma — a API .expect()
é idêntica.
Escrevendo Ótimas Asserções Supertest
O poder do Supertest vem de suas asserções encadeáveis — rápidas de escrever e fáceis de ler. Aqui estão padrões que você usará todos os dias:
- Status e cabeçalhos
request(app)
.get('/users')
.expect(200)
.expect('Content-Type', /json/);
- Valide a estrutura do corpo com uma função personalizada
request(app)
.get('/users')
.expect(200)
.expect(res => {
if (!Array.isArray(res.body)) throw new Error('Expected an array');
if (res.body.length === 0) throw new Error('Expected at least one user');
});
- Correspondência exata do corpo ou regex
request(app)
.get('/health')
.expect(200)
.expect({ status: 'ok' });
request(app)
.get('/health')
.expect(200)
.expect(/"status":"ok"/);
- Autenticação, query e payloads
request(app)
.post('/posts')
.set('Authorization', 'Bearer test-token')
.send({ title: 'Hello', body: 'World' })
.expect(201)
.expect(res => {
if (!res.body.id) throw new Error('Missing id');
});
- Persistir cookies entre requisições usando
agent
const agent = request.agent(app);
await agent.get('/login').expect(200);
await agent.get('/me').expect(200).expect(res => {
if (!res.body.user) throw new Error('Expected authenticated user');
});
Dica: Mantenha os testes pequenos e determinísticos. O Supertest se destaca na validação de controladores, middlewares e adaptadores isoladamente.
Supertest em CI/CD e Monorepos
Para manter a qualidade consistente, execute o Supertest em CI para cada pull request. Uma configuração típica:
- Execute suítes de unidade + Supertest em paralelo para velocidade
- Use um banco de dados de teste (contêineres ou um armazenamento em memória)
- Popule pequenos conjuntos de dados por arquivo de teste para evitar acoplamento entre testes
- Falhe rapidamente em regressões de contrato (status, cabeçalhos, esquema)
Exemplo de trecho de GitHub Actions:
name: api-tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm ci
- run: npm test -- --ci
Em monorepos, execute apenas os testes afetados e armazene em cache node_modules
para acelerar os ciclos de feedback. A sobrecarga mínima do Supertest o torna uma ótima opção para grandes bases de código.
Quando Usar uma Plataforma de Teste de API
Supertest é excelente para feedback rápido no nível do código. Mas as realidades de produção exigem mais:
- Colaboração entre equipes (produto, backend, frontend, QA)
- Design e governança de API contract-first (OpenAPI)
- Servidores mock para desbloquear o desenvolvimento front-end
- Testes de cenário orientados por dados e asserções visuais
- Variáveis multiambiente, segredos e dados de teste
- Orquestração de CI e documentação interativa e compartilhável
É aqui que uma plataforma de teste de API como o Apidog se destaca. Ele unifica design de API, mocking, testes, depuração e documentação para manter as equipes alinhadas e seus portões de qualidade duráveis.

Por Que o Apidog Complementa o Supertest
- Projete e versiona especificações OpenAPI visualmente ou importe especificações existentes
- Gere servidores mock automaticamente para paralelizar o trabalho de front-end e back-end
- Construa testes com asserções visuais e extração de variáveis
- Valide respostas contra sua especificação e evite desvio de esquema
- Publique documentação de API online interativa que sua equipe e parceiros podem consumir
Um Fluxo de Trabalho Combinado: Supertest + Apidog
Use o Supertest para verificações centradas no desenvolvedor e o Apidog para colaboração de ponta a ponta. Aqui está uma divisão pragmática de responsabilidades:
Tarefa | Supertest | Apidog |
Verificações de unidade de controlador/middleware | Excelente | Complementar |
Regressões rápidas de contrato (status/cabeçalhos) | Excelente | Excelente |
Governança de esquema (OpenAPI) | Manual | De primeira classe |
Servidores mock para front-end | Limitado | Embutido |
Cenários orientados por dados | Limitado | De primeira classe |
Orquestração de CI entre ambientes | Bom | De primeira classe |
Colaboração/documentação da equipe | Mínimo | De primeira classe |
Fluxo de exemplo:
- Defina ou importe a especificação da API no Apidog. Alinhe campos, erros e versões.
- Gere mocks para que o front-end possa começar imediatamente.
- Implemente endpoints em Node.js; escreva verificações Supertest para status/cabeçalhos/payloads.
- No Apidog, construa testes de cenário e asserções visuais contra a mesma especificação.
- Controle merges com ambas as suítes em CI. Publique documentos do Apidog.
Padrões Avançados do Supertest
Algumas dicas adicionais que valem a pena:
- Centralize seu
request = request(app)
ou URL base em um helper para evitar repetição - Use factories/fixtures para payloads repetíveis
- Combine o Supertest com validadores de esquema (por exemplo,
ajv
) para impor contratos de resposta - Para streaming ou SSE, teste cabeçalhos e padrões de chunk; para WebSockets, use um cliente específico de protocolo mais testes de integração no Apidog
- Mantenha um linter e formatador rigorosos para manter a legibilidade sob pressão de prazos
Conclusão: Uma Abordagem Equilibrada para a Qualidade da API
APIs de qualidade são construídas com velocidade e rigor. O Supertest oferece aos desenvolvedores uma maneira rápida e expressiva de verificar endpoints próximos ao código — perfeito para ciclos de feedback curtos e para capturar regressões antes que escapem de um branch. É simples, confiável e testado em batalha em muitos backends Node.js.
À medida que os sistemas crescem, no entanto, você precisa de colaboração, governança de contrato e execução ciente do ambiente. É aí que o Apidog — uma plataforma de teste de API integrada — eleva seu fluxo de trabalho. Ao unificar o design de contrato (OpenAPI), servidores mock, asserções visuais, variáveis de ambiente e orquestração de CI, o Apidog ajuda as equipes a avançar em sincronia da ideia à entrega. Front-end, back-end e QA podem compartilhar a mesma fonte de verdade enquanto o Supertest continua a proteger seus caminhos de código com asserções rápidas e determinísticas.
Se você quer velocidade com confiança, use ambos:
- Mantenha o Supertest para testes rápidos e de nível de código que os desenvolvedores adoram
- Adote o Apidog para projetar contratos de API, desbloquear equipes com mocks, validar respostas contra especificações e publicar documentos
Essa abordagem equilibrada resulta em APIs que não são apenas corretas hoje, mas resilientes à medida que seu produto evolui. Comece a escrever suas verificações Supertest agora — e dê vida a elas em um pipeline de nível de produção com o Apidog.