- Instalaciones:
yarn add --dev jest babel-jest @babel/preset-env @babel/preset-react
yarn add --dev @testing-library/react @types/jest jest-environment-jsdom
- Opcional: Si usamos Fetch API en el proyecto:
yarn add --dev whatwg-fetch
- Actualizar los scripts del package.json
"scripts: {
...
"test": "jest --watchAll"
- Crear la configuración de babel
babel.config.js
module.exports = {
presets: [
[ '@babel/preset-env', { targets: { esmodules: true } } ],
[ '@babel/preset-react', { runtime: 'automatic' } ],
],
};
- Para componentes que importen CSS, crear un archivo llamado:
tests/mocks/styleMock.js
module.exports = {};
- Opcional, pero eventualmente necesario, crear Jest config y setup:
jest.config.js
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)$': '<rootDir>/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 })
// }));
Los invitamos a que se unan a nuestra comunidad de estudiantes en Discord y habla con personas que también estan aprendiendo igual que tu sobre diversas tecnologías.
Hola Fernando, personalmente he tenido que añadir la propiedad "transform" en el jest.config.js porque sino no me funcionaba correctamente, lo dejo aquí por si a alguien le ayuda:
module.exports = { ... transform: { '\\.[jt]sx?$': 'babel-jest', }, ... };