Saltar al contenido

Lección 10 de 12 · Lectura y práctica

Testing con Supertest y Vitest

Respuesta rapida: Supertest permite probar endpoints Express sin levantar manualmente un navegador. Vitest organiza casos, asserts y setup de base de datos o mocks. Que vas a construir Supertest permite probar endpoints Express.

Del concepto a la práctica

Taller de esta lección

Una prueba de endpoint debe verificar el contrato observable: entrada, status, forma de respuesta y efecto permitido. Supertest puede enviar la petición a la aplicación y Vitest organizar los casos. La prueba no necesita comprobar cada línea interna si cubre una decisión crítica.

Ejemplo resuelto

Para POST /enrollments, prepara un usuario autenticado y un curso existente. La respuesta válida debe ser 201 y contener la relación creada. Repite con el mismo usuario y curso: espera 409. Añade un usuario sin permiso cuando la ruta sea restringida: espera 403 y confirma que no aumentó el número de inscripciones.

La app de la primera lección puede comprobarse con estas pruebas independientes:

js
import request from 'supertest';
import { describe, it, expect } from 'vitest';
import { createApp } from './app.js';
describe('contrato de detalle', () => {
  it('devuelve el curso existente', async () => {
    const res = await request(createApp()).get('/courses/c1');
    expect(res.status).toBe(200);
    expect(res.body).toEqual({ id: 'c1', title: 'JavaScript' });
  });
  it('controla un ID inexistente', async () => {
    const res = await request(createApp()).get('/courses/c9');
    expect(res.status).toBe(404);
    expect(res.body.error).toBe('COURSE_NOT_FOUND');
  });
});

Para el duplicado de inscripciones, crea primero la inscripción dentro del mismo caso que probará 409. El caso de permiso necesita una política concreta, por ejemplo usuario suspendido: un estudiante activo sí puede inscribirse según este proyecto. No mezcles ese permiso con el de publicar cursos.

Pruébalo

  1. Prepara datos mínimos y aislados.

  2. Envía el caso válido y comprueba status y cuerpo.

  3. Envía duplicado y permiso insuficiente.

  4. Limpia o reinicia los datos entre casos.

Error frecuente: probar solo el camino feliz. Corrígelo incluyendo entradas inválidas, duplicados y ausencia de autorización.

Comprueba tu resultado

La matriz mínima debe contener tres filas: válido 201, duplicado 409 y sin permiso 403. En la última fila, el contador de inscripciones debe coincidir con el valor anterior; ninguna prueba puede depender del orden accidental de otra.

Navegador, API y base de datos conectados por solicitudes, consultas y respuestas en sentidos opuestos.
CursaloMapa de práctica
Del navegador a los datos

El navegador envía una solicitud a la API. El servidor valida la operación y consulta los datos; después devuelve una respuesta que el navegador puede mostrar. La base de datos se comunica con el servidor y no directamente con el navegador.

Ver la infografía en tamaño completo ↗
Fuentes para profundizar
Respuesta rapida: Supertest permite probar endpoints Express sin levantar manualmente un navegador. Vitest organiza casos, asserts y setup de base de datos o mocks.

Que vas a construir

Supertest permite probar endpoints Express sin levantar manualmente un navegador. Vitest organiza casos, asserts y setup de base de datos o mocks.

Paso 1: criterio de backend

Empieza por pruebas de contrato: status esperado, shape de respuesta, error cuando falta un campo y permiso cuando el usuario no corresponde.

Paso 2: criterio de backend

No hace falta testear cada linea. Priorizá rutas criticas: login, creacion, listado con filtros, permisos y errores. Eso comunica criterio profesional.

Paso 3: criterio de backend

En un README, incluye el comando para correr tests y una captura del resultado. Para clientes y equipos, las pruebas son evidencia de confiabilidad.

Ejercicio practico para portfolio

Construye una mini API de cursos, usuarios o empleos con Express.js. Inclui rutas claras, validacion, errores consistentes y un README que explique como correr el proyecto. La meta es que un reclutador o cliente vea que podes pasar de tutorial a backend mantenible.

  • Entregable: repositorio con endpoint, ejemplo de request y respuesta esperada.
  • Checklist: status codes correctos, validacion, logs, seguridad basica y pruebas manuales reproducibles.
  • Salida laboral: conecta el proyecto con rutas de carreras, empleos y servicios backend del marketplace.

Sigue con Express.js y Node.js para APIs profesionales

Esta lección forma parte de un curso de Cursalo. Revisa su programa y elige entre la compra individual o el acceso a toda la escuela.

Si ya tenías acceso a este curso, entra con tu cuenta: tus derechos y tu progreso se conservan. No necesitas comprarlo de nuevo.

01 / ELEGIR UNA RUTA

El próximo paso

Aprende IA mientras construyes algo que sí necesitas.

Empieza por el curso inicial o explora el catálogo para encontrar una práctica alineada con tu trabajo.