- 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 })
// }));
Muchas Gracias Fernando, por tanto profesionalismo y tu increíble pedagogía durante el curso...!