Las pruebas de código son una parte esencial del desarrollo de software, ya que aseguran que el código funcione como se espera y ayuda a prevenir errores en el futuro. En este tema, aprenderemos cómo escribir y ejecutar pruebas en TypeScript utilizando herramientas populares como Jest y Mocha.
Contenido
Introducción a las Pruebas
Las pruebas de software se dividen en varias categorías, pero las más comunes son:
- Pruebas Unitarias: Verifican el funcionamiento de una unidad individual de código (por ejemplo, una función o un método).
- Pruebas de Integración: Verifican la interacción entre diferentes unidades de código.
- Pruebas de Sistema: Verifican el sistema completo para asegurarse de que cumple con los requisitos.
En este tema, nos centraremos principalmente en las pruebas unitarias.
Configuración del Entorno de Pruebas
Instalación de Jest
Jest es un framework de pruebas popular para JavaScript y TypeScript. Para instalar Jest en un proyecto TypeScript, sigue estos pasos:
-
Inicializa un proyecto Node.js (si aún no lo has hecho):
npm init -y
-
Instala Jest y sus tipos para TypeScript:
npm install --save-dev jest @types/jest ts-jest
-
Configura Jest: Crea un archivo de configuración
jest.config.js
en la raíz del proyecto:module.exports = { preset: 'ts-jest', testEnvironment: 'node', };
Instalación de Mocha
Mocha es otro framework de pruebas popular. Para instalar Mocha en un proyecto TypeScript, sigue estos pasos:
-
Instala Mocha y Chai:
npm install --save-dev mocha chai @types/mocha @types/chai ts-node
-
Configura Mocha: Crea un archivo de configuración
mocha.opts
en la carpetatest
:--require ts-node/register --require source-map-support/register --recursive
Escribiendo Pruebas con Jest
Ejemplo de Prueba Unitaria
Supongamos que tenemos una función sum
en un archivo sum.ts
:
Podemos escribir una prueba unitaria para esta función en un archivo sum.test.ts
:
// sum.test.ts import { sum } from './sum'; test('adds 1 + 2 to equal 3', () => { expect(sum(1, 2)).toBe(3); });
Ejecutar las Pruebas
Para ejecutar las pruebas, simplemente usa el comando:
Escribiendo Pruebas con Mocha
Ejemplo de Prueba Unitaria
Supongamos que tenemos la misma función sum
en un archivo sum.ts
:
Podemos escribir una prueba unitaria para esta función en un archivo sum.test.ts
:
// sum.test.ts import { expect } from 'chai'; import { sum } from './sum'; describe('sum function', () => { it('should add 1 + 2 to equal 3', () => { expect(sum(1, 2)).to.equal(3); }); });
Ejecutar las Pruebas
Para ejecutar las pruebas, simplemente usa el comando:
Ejercicios Prácticos
Ejercicio 1: Prueba de una Función de Multiplicación
- Crea una función
multiply
en un archivomultiply.ts
que multiplique dos números. - Escribe una prueba unitaria para la función
multiply
usando Jest. - Escribe una prueba unitaria para la función
multiply
usando Mocha.
Solución
Prueba con Jest:
// multiply.test.ts import { multiply } from './multiply'; test('multiplies 2 * 3 to equal 6', () => { expect(multiply(2, 3)).toBe(6); });
Prueba con Mocha:
// multiply.test.ts import { expect } from 'chai'; import { multiply } from './multiply'; describe('multiply function', () => { it('should multiply 2 * 3 to equal 6', () => { expect(multiply(2, 3)).to.equal(6); }); });
Ejercicio 2: Prueba de una Función de División
- Crea una función
divide
en un archivodivide.ts
que divida dos números. - Escribe una prueba unitaria para la función
divide
usando Jest. - Escribe una prueba unitaria para la función
divide
usando Mocha.
Solución
// divide.ts export function divide(a: number, b: number): number { if (b === 0) { throw new Error('Cannot divide by zero'); } return a / b; }
Prueba con Jest:
// divide.test.ts import { divide } from './divide'; test('divides 6 / 2 to equal 3', () => { expect(divide(6, 2)).toBe(3); }); test('throws error when dividing by zero', () => { expect(() => divide(6, 0)).toThrow('Cannot divide by zero'); });
Prueba con Mocha:
// divide.test.ts import { expect } from 'chai'; import { divide } from './divide'; describe('divide function', () => { it('should divide 6 / 2 to equal 3', () => { expect(divide(6, 2)).to.equal(3); }); it('should throw error when dividing by zero', () => { expect(() => divide(6, 0)).to.throw('Cannot divide by zero'); }); });
Conclusión
En esta sección, hemos aprendido cómo configurar un entorno de pruebas para TypeScript utilizando Jest y Mocha. También hemos visto cómo escribir y ejecutar pruebas unitarias para funciones simples. Las pruebas son una herramienta poderosa para asegurar la calidad del código y deben ser una parte integral de cualquier proyecto de software.
En el siguiente módulo, exploraremos cómo integrar TypeScript con herramientas de construcción y frameworks populares como Webpack y React.
Curso de TypeScript
Módulo 1: Introducción a TypeScript
- ¿Qué es TypeScript?
- Configuración del Entorno de TypeScript
- Tipos Básicos
- Anotaciones de Tipo
- Compilando TypeScript
Módulo 2: Trabajando con Tipos
Módulo 3: Tipos Avanzados
Módulo 4: Funciones y Módulos
- Tipos de Función
- Parámetros Opcionales y Predeterminados
- Parámetros Rest
- Módulos y Espacios de Nombres
- Decoradores
Módulo 5: Programación Asíncrona
Módulo 6: Herramientas y Mejores Prácticas
- Linting y Formateo
- Pruebas de Código TypeScript
- TypeScript con Webpack
- TypeScript con React
- Mejores Prácticas