Jest es el framework de testing más utilizado del ecosistema JavaScript y TypeScript. Creado y mantenido por Meta (Facebook), proporciona en un único paquete todo lo necesario para escribir, ejecutar y mantener pruebas automatizadas: runner paralelizado, API de aserciones expresiva (expect), mocks integrados sin librerías adicionales, snapshot testing, fake timers, cobertura con Istanbul y soporte para TypeScript mediante ts-jest o el compilador de Babel. En 2026 la versión de referencia es Jest 30, alineada con Node.js 22 LTS (o 20 LTS), TypeScript 5.7+ y un ecosistema renovado que incluye globalsApi, expect.toBeOneOf, mejoras de rendimiento del 30% en proyectos grandes y la adopción definitiva de jest-environment-jsdom v26 para tests de componentes web.
Desde su origen como herramienta interna para testear React, Jest ha pasado a ser el estándar de facto en proyectos Node.js, React, Next.js, NestJS y Express. Su filosofía zero-config permite añadirlo a un proyecto sin configurar transformadores, runners o plugins, lo que lo convierte en la elección por defecto para equipos que arrancan o que necesitan resultados rápidos. La integración nativa con Babel, TypeScript, JSX y Webpack elimina la fricción habitual de configurar múltiples herramientas de testing en un mismo repositorio.
Qué incluye este itinerario
- Fundamentos de Jest 30: arquitectura, instalación con
npm init jest@latest, configuración conjest.config.ts, primer test condescribe,testyexpect. - Aserciones y matchers:
toBe,toEqual,toContain,toMatchObject,toThrow, asimétricos (expect.any,expect.objectContaining) y matchers personalizados conexpect.extend. - Ciclo de vida:
beforeEach,afterEach,beforeAll,afterAlly suites anidadas condescribepara organizar tests por contexto. - Mocks y espías:
jest.fn(),jest.spyOn(),jest.mock()para módulos completos, manual mocks con__mocks__/yfake timersmodernos conuseFakeTimers({ advanceTimers: true }). - Testing asíncrono:
async/await,.resolves/.rejects, callbacks condone, control de promesas y manejo de errores asíncronos. - Snapshot testing: snapshots externos en
__snapshots__/, inline snapshots contoMatchInlineSnapshot()y estrategias para revisar y actualizar snapshots en CI. - Cobertura: reportes con
--coverage, configuración decollectCoverageFrom, umbrales concoverageThresholdy exclusión de archivos generados. - Integraciones: React Testing Library para componentes React 19,
ts-jesty SWC para TypeScript 5, NestJS Testing Module para servicios y controladores, y comparativa contra Vitest para decidir cuándo migrar.
Versiones y dependencias clave
- Jest 30 con
@jest/globalsy soporte experimental de ESM. - Node.js 22 LTS o 20 LTS y npm 10+ o pnpm 9+.
- TypeScript 5.7+ con
ts-jest 29.xobabel-jest. - React 19 con React Testing Library y
jest-environment-jsdom 26. - NestJS 11 con
@nestjs/testingpara tests de inyección de dependencias. - Istanbul / V8 como motores de cobertura built-in.
Documentación oficial
La referencia completa está en https://jestjs.io/ y la guía de migración a Jest 30 en https://jestjs.io/docs/upgrading-to-jest30. El repositorio se mantiene en https://github.com/jestjs/jest.