Inicio

Configura React Testing Library con TypeScript

Las pruebas son fundamentales para asegurar la estabilidad y calidad de una aplicación. En esta entrada, aprenderás a configurar tu proyecto de React utilizando React Testing Library junto con TypeScript.

OIG4.png

Instalación de paquetes:

Para comenzar, necesitarás instalar algunos paquetes. Utiliza el siguiente comando para agregar las herramientas necesarias:

npm install --save-dev jest @testing-library/react @testing-library/jest-dom jest-environment-jsdom

Para hacerlo funcionar con TypeScript, agrega los siguientes paquetes adicionales:

npm install --save-dev ts-jest @types/jest @types/testing-library__react @types/testing-library__jest-dom

Configuración inicial:

Una vez instalados los paquetes, es crucial establecer la configuración necesaria. Ejecuta el siguiente comando para inicializar la configuración de ts-jest:

npx ts-jest config:init

Modifica el archivo jest.config.js de la siguiente manera:

/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */ module.exports = { preset: 'ts-jest', testEnvironment: 'jsdom', globals: { 'ts-jest': { isolatedModules: true, }, }, }

Luego, agrega una configuración al archivo tsconfig.json con el siguiente contenido. Es importante cambiar esModuleInterop a true dado que algunas librerías pueden dar error cuando se lanza jest:

{ "compilerOptions": { "types": ["jest"], "esModuleInterop": true, } }

Haz una copia del archivo tsconfig.json con el nombre tsconfig.build.json. Este archivo se utilizará cuando Vite construya el proyecto.

Configuración adicional:

En el archivo tsconfig.build.json, modifica y agrega las siguientes opciones:

{ "compilerOptions": { "target": "ESNext", "useDefineForClassFields": true, "lib": ["DOM", "DOM.Iterable", "ESNext"], "allowJs": false, "skipLibCheck": true, "esModuleInterop": true, "allowSyntheticDefaultImports": true, "strict": true, "forceConsistentCasingInFileNames": true, "module": "ESNext", "moduleResolution": "Node", "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, "jsx": "react-jsx", "baseUrl": ".", "paths": { "@/*": ["./src/*"] }, }, "include": ["./src"], "exclude": ["**/*.spec.tsx"], "references": [{ "path": "./tsconfig.node.json" }] }

Es importante excluir todos los archivos .spec.tsx para acelerar el proceso de construcción.

Finalmente, en el archivo package.json, ajusta los scripts de la siguiente manera:

"scripts": { ... "build": "tsc --project tsconfig.build.json && vite build", "test": "tsc && jest" },