¿Qué es ts-jest y para qué sirve?
\n\nts-jest es un preprocesador de TypeScript para el popular framework de pruebas Jest. Permite ejecutar pruebas escritas en TypeScript sin necesidad de compilación previa a JavaScript. La biblioteca transforma automáticamente el código TypeScript a JavaScript durante la ejecución de las pruebas, utilizando el compilador integrado de TypeScript.
\n\nEl objetivo principal de ts-jest es proporcionar una integración perfecta de TypeScript con Jest. Sin él, sería necesario configurar manualmente la compilación de TypeScript antes de cada ejecución de pruebas o utilizar herramientas adicionales como ts-node. ts-jest hace que este proceso sea transparente y automático.
Ventajas clave de usar ts-jest:
\n- \n
- Compilación automática — los archivos TypeScript se compilan "sobre la marcha" durante las pruebas \n
- Soporte completo de TypeScript — todas las características del lenguaje (decoradores, genéricos, tipos) funcionan correctamente \n
- Source maps — cuando hay errores, ves el código TypeScript original, no el JavaScript compilado \n
- Rendimiento — ts-jest almacena en caché los resultados de la compilación, lo que acelera las ejecuciones repetidas \n
- Flexibilidad — se pueden configurar los parámetros del compilador TypeScript a través de la configuración de Jest \n
Instalación de ts-jest
\n\nPara trabajar con ts-jest necesitas Node.js (versión 14 o superior) y un gestor de paquetes npm o yarn. La instalación se realiza con un solo comando:
\n\nnpm install --save-dev jest typescript ts-jest @types/jest\n\nO mediante yarn:
\n\nyarn add --dev jest typescript ts-jest @types/jest\n\nExplicación de los paquetes:
\n- \n
jest— el propio framework de pruebas \n typescript— el compilador de TypeScript \n ts-jest— el preprocesador para la integración \n @types/jest— tipos TypeScript para Jest (para autocompletado y verificación de tipos) \n
Después de la instalación, debes crear o actualizar el archivo jest.config.js (o jest.config.ts):
// jest.config.js\nmodule.exports = {\n preset: 'ts-jest',\n testEnvironment: 'node',\n roots: ['<rootDir>/src'],\n testMatch: ['**/__tests__/**/*.ts?(x)', '**/?(*.)+(spec|test).ts?(x)'],\n moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node']\n};\n\nAsegúrate también de que en tsconfig.json estén configurados los parámetros correctos:
{\n "compilerOptions": {\n "target": "ES2020",\n "module": "commonjs",\n "strict": true,\n "esModuleInterop": true,\n "skipLibCheck": true,\n "forceConsistentCasingInFileNames": true,\n "outDir": "./dist",\n "rootDir": "./src",\n "declaration": true,\n "sourceMap": true\n },\n "include": ["src/**/*"],\n "exclude": ["node_modules", "dist", "**/*.test.ts"]\n}\n\nInicio rápido con ejemplo de código
\n\nCreemos una función simple y una prueba para ella. Estructura del proyecto:
\n\nmy-project/\n├── src/\n│ ├── math.ts\n│ └── __tests__/\n│ └── math.test.ts\n├── jest.config.js\n├── tsconfig.json\n└── package.json\n\nArchivo: src/math.ts
\n\nexport function add(a: number, b: number): number {\n return a + b;\n}\n\nexport function subtract(a: number, b: number): number {\n return a - b;\n}\n\nexport function multiply(a: number, b: number): number {\n return a * b;\n}\n\nexport function divide(a: number, b: number): number {\n if (b === 0) {\n throw new Error('Division by zero');\n }\n return a / b;\n}\n\nArchivo: src/__tests__/math.test.ts
\n\nimport { add, subtract, multiply, divide } from '../math';\n\ndescribe('Math functions', () => {\n test('adds 1 + 2 to equal 3', () => {\n expect(add(1, 2)).toBe(3) También en la biblioteca
Configuración de aplicaciones PHP: bibliotecas y herramientas para gestionar ajustes
Trabajo con CSV en Rust: biblioteca csv y ejemplos prácticos
MassTransit C# (.NET): guía completa con ejemplos prácticos
ts-morph para TypeScript: guía completa con ejemplos