Por qué las pruebas de TypeScript no dan miedo, sino que son beneficiosas
\n\nEscribiste una función genial en TypeScript, ejecutaste el proyecto — todo funciona. Una semana después agregaste una nueva funcionalidad, y la lógica anterior se rompió. ¿Te suena familiar? Si es así, necesitas urgentemente hacerte amigo de las pruebas. Y no tengas miedo: las pruebas no son una obligación aburrida, sino tu «detector de errores» personal que funciona 24/7.
\n\nEn este artículo, analizaremos por dónde empezar a probar TypeScript para un principiante. Aprenderás cómo configurar el entorno, escribir tu primera prueba unitaria y no confundirte con los tipos. Sin rodeos — solo práctica y ejemplos de código reales.
\n\n¿Por qué probar TypeScript si ya es seguro?
\n\nTypeScript realmente detecta muchos errores en la etapa de compilación: tipos incorrectos, campos faltantes, argumentos inválidos. Pero la tipificación estática no salva de errores lógicos. Tu función puede compilar perfectamente, pero dar un resultado incorrecto. Por ejemplo:
\n\nfunction sum(a: number, b: number): number {\n return a - b; // ¡Error! En lugar de suma — resta\n}\n\nTypeScript no se quejará — los tipos se respetan. Pero una prueba unitaria mostrará inmediatamente que sum(2, 2) no es igual a 4. Por lo tanto, probar TypeScript no es un capricho, sino una necesidad para cualquier proyecto serio.
Paso 1. Elegir la herramienta: por qué Jest es el mejor amigo del principiante
\n\nEn el mercado hay varios frameworks populares para pruebas: Mocha, Jasmine, Vitest, Jest. Para principiantes, recomiendo encarecidamente Jest. ¿Por qué?
\n\n- \n
- Funciona «de fábrica» — no necesita mucha configuración. \n
- Mecanismo de simulación (mock) y cobertura de código integrados. \n
- Excelente soporte para TypeScript a través de
ts-jest. \n - Mensajes de error claros. \n
Instalemos Jest en tu proyecto. Asumo que ya tienes TypeScript. Si no, crea un nuevo proyecto:
\n\nmkdir my-ts-project\ncd my-ts-project\nnpm init -y\nnpm install typescript jest @types/jest ts-jest --save-dev\n\nAhora creemos un archivo jest.config.js en la raíz del proyecto:
module.exports = {\n preset: 'ts-jest',\n testEnvironment: 'node',\n roots: ['/src'],\n testMatch: ['**/__tests__/**/*.ts', '**/?(*.)+(spec|test).ts'],\n}; \n\nY agreguemos un script en package.json:
"scripts": {\n "test": "jest",\n "test:watch": "jest --watch"\n}\n\n¡Listo! Ahora puedes escribir pruebas.
\n\nPaso 2. Escribir la primera prueba en TypeScript
\n\nCreemos una función simple en el archivo src/math.ts:
export function add(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('División por cero no permitida');\n }\n return a / b;\n}\n\nAhora escribamos una prueba para ella. Crea la carpeta src/__tests__/ y el archivo math.test.ts:
import { add, divide } from '../math';\n\ndescribe('Funciones matemáticas', () => {\n test('suma dos números correctamente', () => {\n expect(add(2, 3)).toBe(5);\n expect(add(-1, 1)).toBe(0);\n expect(add(0, 0)).toBe(0);\n });\n\n test('divide dos números', () => {\n expect(divide(10, 2)).toBe(5);\n expect(divide(9, 3)).toBe(3);\n });\n\n test('lanza un error al dividir por cero', () => {\n expect(() => divide(5, 0)).toThrow('División por cero no permitida');\n });\n});\n\nEjecuta npm test y verás un informe verde. Felicidades — acabas de escribir tus primeras pruebas unitarias en TypeScript!
¿Qué pasó aquí?
\n\n- \n
describe— agrupa las pruebas en un grupo lógico. \n testoit— un caso de prueba individual. \n expect— una aserción que verifica