Cómo Usar Supertest para Probar APIs HTTP en Node.js

Oliver Kingsley

Oliver Kingsley

14 August 2025

Cómo Usar Supertest para Probar APIs HTTP en Node.js

En el panorama de las API, que evoluciona rápidamente, los equipos necesitan dos cosas: retroalimentación rápida a nivel de código y validación confiable de extremo a extremo en todos los entornos. Supertest ofrece lo primero: aserciones HTTP ultrarrápidas para servicios Node.js. Y cuando esté listo para colaborar entre roles, ejecutar pruebas de escenarios, simular dependencias y publicar documentación, una plataforma de prueba de API como Apidog completa el panorama. Esta guía oficial y objetiva explica cómo usar Supertest para probar API, dónde destaca y cómo combinarlo con Apidog para acelerar la entrega con confianza.

Apidog
button

¿Qué es Supertest?

Supertest es una biblioteca ligera de Node.js para probar servidores HTTP. Se basa en superagent y le permite escribir aserciones expresivas contra códigos de estado, encabezados y cuerpos de respuesta, sin iniciar clientes externos. Es ideal cuando:

Cuando necesite colaboración, gobernanza de cumplimiento de API, orquestación de entornos y pruebas visuales, complementará Supertest con una plataforma de prueba de API como Apidog. El resto de este artículo muestra cómo hacer ambas cosas.

button

Instalar y configurar Supertest

Puede instalar Supertest en minutos. Use npm, pnpm o yarn:

# npm   npm install --save-dev supertest jest

# pnpm  pnpm add -D supertest jest

# yarn

yarn add -D supertest jest

Una 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;

Una prueba simple (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!');

  });

});

Actualice package.json para ejecutar pruebas:

{

  "scripts": {

    "test": "jest"

  }

}

Ejecute sus pruebas:

npm test

Si prefiere Mocha o Vitest, Supertest funciona igual: la API .expect() es idéntica.


Escribir excelentes aserciones con Supertest

El poder de Supertest proviene de sus aserciones encadenables, rápidas de escribir y fáciles de leer. Aquí hay patrones que usará todos los días:

request(app)

  .get('/users')

  .expect(200)

  .expect('Content-Type', /json/);
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');

  });
request(app)

  .get('/health')

  .expect(200)

  .expect({ status: 'ok' });



request(app)

  .get('/health')

  .expect(200)

  .expect(/"status":"ok"/);
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');

  });
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');

});
Consejo: Mantenga las pruebas pequeñas y deterministas. Supertest destaca en la validación de controladores, middleware y adaptadores de forma aislada.

Supertest en CI/CD y monorepos

Para mantener una calidad constante, ejecute Supertest en CI para cada pull request. Una configuración típica:

Ejemplo de fragmento 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

En monorepos, ejecute solo las pruebas afectadas y almacene en caché node_modules para acelerar los ciclos de retroalimentación. La sobrecarga mínima de Supertest lo convierte en una excelente opción para grandes bases de código.


Cuándo usar una plataforma de prueba de API

Supertest es excelente para una retroalimentación rápida a nivel de código. Pero las realidades de producción exigen más:

Aquí es donde una plataforma de prueba de API como Apidog brilla. Unifica el diseño de API, la simulación, las pruebas, la depuración y la documentación para mantener a los equipos alineados y sus puertas de calidad duraderas.

button
Apidog Testing UI

Por qué Apidog complementa a Supertest


Un flujo de trabajo combinado: Supertest + Apidog

Use Supertest para comprobaciones centradas en el desarrollador y Apidog para la colaboración de extremo a extremo. Aquí hay una división pragmática de responsabilidades:

Tarea
Supertest
Apidog
Comprobaciones unitarias de controlador/middleware
Excelente
Complementario
Regresiones rápidas de contrato (estado/encabezados)
Excelente
Excelente
Gobernanza de esquema (OpenAPI)
Manual
De primera clase
Servidores simulados para front-end
Limitado
Integrado
Escenarios basados en datos
Limitado
De primera clase
Orquestación de CI en entornos
Bueno
De primera clase
Colaboración en equipo/documentos
Mínimo
De primera clase

Ejemplo de flujo:


Patrones avanzados de Supertest

Algunos consejos adicionales que dan sus frutos:


Conclusión: Un enfoque equilibrado para la calidad de la API

Las API de calidad se construyen con velocidad y rigor. Supertest ofrece a los desarrolladores una forma rápida y expresiva de verificar puntos finales cerca del código, perfecto para ciclos de retroalimentación ajustados y para detectar regresiones antes de que escapen de una rama. Es simple, confiable y probado en muchos backends de Node.js.

Sin embargo, a medida que los sistemas crecen, se necesita colaboración, gobernanza de contratos y ejecución consciente del entorno. Ahí es donde Apidog, una plataforma de prueba de API integrada, eleva su flujo de trabajo. Al unificar el diseño de contratos (OpenAPI), los servidores simulados, las aserciones visuales, las variables de entorno y la orquestación de CI, Apidog ayuda a los equipos a avanzar al unísono desde la idea hasta la entrega. Front-end, back-end y QA pueden compartir la misma fuente de verdad, mientras que Supertest continúa protegiendo sus rutas de código con aserciones rápidas y deterministas.

Si desea una velocidad con confianza, use ambos:

Este enfoque equilibrado produce API que no solo son correctas hoy, sino también resistentes a medida que su producto evoluciona. Comience a escribir sus comprobaciones de Supertest ahora, y hágalas realidad en una pipeline de grado de producción con Apidog.

button

Practica el diseño de API en Apidog

Descubre una forma más fácil de construir y usar APIs