¿Qué es Vitest y para qué sirve?
Vitest es una biblioteca moderna para unit-testing, orientada al ecosistema de Vite y TypeScript. Fue creada como una alternativa rápida a Jest, pero con soporte completo para TypeScript "de fábrica" sin configuración adicional. Vitest utiliza el parser nativo de TypeScript y el sistema de módulos de Vite, lo que hace que las pruebas sean instantáneas incluso en proyectos grandes.
Instalación
Instale Vitest en su proyecto TypeScript a través de npm:
npm install -D vitestAdicionalmente, si usa React o Vue, instale las utilidades relacionadas:
npm install -D @testing-library/react @testing-library/jest-domFunciones principales
- Velocidad: las pruebas se ejecutan en paralelo utilizando workers, lo que acelera la ejecución hasta 10 veces en comparación con Jest.
- Compatibilidad con TypeScript: no requiere ts-jest ni babel — funciona directamente con archivos .ts y .tsx.
- Mocks y spies integrados: funciones vi.mock, vi.spyOn y vi.fn para aislar el código.
- Snapshot-testing: posibilidad de guardar y comparar capturas de componentes o datos.
- Coverage: soporte integrado para c8 o istanbul para informes de cobertura de código.
Ejemplo de código en TypeScript
Escribamos una prueba para una función simple de suma:
// math.tsexport function add(a: number, b: number): number { return a + b;}
// math.test.tsimport { describe, it, expect } from 'vitest';import { add } from './math';
describe('add function', () => { it('should add two positive numbers', () => { expect(add(2, 3)).toBe(5); });
it('should handle negative numbers', () => { expect(add(-1, 1)).toBe(0); });
it('should return zero for zero arguments', () => { expect(add(0, 0)).toBe(0); });});Ejecución de las pruebas:
npx vitestVitest encontrará automáticamente todos los archivos con extensión .test.ts o .spec.ts.
Cuándo usarlo
Vitest es ideal para:
- Proyectos nuevos en Vite: integración instantánea sin configuración.
- Migración desde Jest: Vitest tiene una API similar, lo que facilita la transición.
- Pruebas de bibliotecas TypeScript: soporte completo para decoradores, genéricos y tipos complejos.
- Pipelines de CI/CD: la alta velocidad de ejecución ahorra tiempo en compilaciones automáticas.
Evite Vitest si su proyecto requiere versiones antiguas de Node.js (inferiores a 14) o si utiliza plugins específicos de Jest incompatibles con Vite.
Conclusión
Vitest es una herramienta moderna, rápida y amigable con TypeScript para realizar pruebas. Elimina muchas deficiencias de Jest, como el inicio lento y la configuración compleja de TypeScript. Si trabaja con TypeScript y valora la velocidad de desarrollo, Vitest será una excelente opción.