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:
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
Prepara datos mínimos y aislados.
Envía el caso válido y comprueba status y cuerpo.
Envía duplicado y permiso insuficiente.
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.

Mapa de prácticaEl 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
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.