# Instalación y configuracion de Jest + React Testing Library ## En proyectos de React + Vite YARN 1. Instalaciones: ``` yarn add --dev jest babel-jest @babel/preset-env @babel/preset-react yarn add --dev @testing-library/react @types/jest jest-environment-jsdom ``` 2. Opcional: Si usamos Fetch API en el proyecto: ``` yarn add --dev whatwg-fetch ``` 3. Actualizar los scripts del __package.json__ ``` "scripts: { ... "test": "jest --watchAll" ``` 4. Crear la configuración de babel __babel.config.cjs__ ``` module.exports = { presets: [ [ '@babel/preset-env', { targets: { esmodules: true } } ], [ '@babel/preset-react', { runtime: 'automatic' } ], ], }; ``` 5. Para componentes que importen CSS, crear un archivo llamado: ```tests/mocks/styleMock.js``` ``` module.exports = {}; ``` 6. Opcional, pero eventualmente necesario, crear Jest config y setup: __jest.config.cjs__ ``` module.exports = { testEnvironment: 'jest-environment-jsdom', setupFiles: ['./jest.setup.js'], transformIgnorePatterns: [], // ModuleNameMapper sólo si ocupamos importar CSS en nuestros componentes para el testing moduleNameMapper: { '\\.(css|less)$': '/tests/mocks/styleMock.js', }, } ``` __jest.setup.js__ ``` // En caso de necesitar la implementación del FetchAPI // yarn add -D whatwg-fetch // import 'whatwg-fetch'; // En caso de encontrar paquetes que lo requieran // yarn add -D setimmediate // import 'setimmediate'; // En caso de tener variables de entorno y aún no soporta el import.meta.env // yarn add -D dotenv // require('dotenv').config({ // path: '.env.test' // }); // Realizar el mock completo de las variables de entorno // jest.mock('./src/helpers/getEnvVariables', () => ({ // getEnvVariables: () => ({ ...process.env }) // })); ``` ___________________________________________________________________ npm 1. Instalaciones: ``` npm i -D jest babel-jest @babel/preset-env @babel/preset-react npm i -D @testing-library/react @types/jest jest-environment-jsdom ``` 2. Opcional: Si usamos Fetch API en el proyecto: ``` npm i -D whatwg-fetch ``` 3. Opcional: si encontramos paquetes que lo requieran: ``` npm i -D setimmediate ``` 3. Opcional: En caso de tener variables de entorno y aún no soporta el import.meta.env ``` npm i -D dotenv ```