Файл jest.config.js является ключевым компонентом
конфигурации для Jest — популярного фреймворка для тестирования
JavaScript-приложений. Этот файл используется для настройки различных
аспектов поведения Jest, таких как обработка модулей, использование
трансформеров для различных типов файлов и настройка специфичных для
тестов параметров.
Файл конфигурации Jest обычно представляется в формате CommonJS, что означает, что он экспортирует объект с настройками. Стандартный шаблон выглядит следующим образом:
module.exports = {
// настройки
};
В объекте можно указать различные параметры для конфигурации Jest. Основные из них будут рассмотрены ниже.
testEnvironmentЭтот параметр задает среду выполнения для тестов. По умолчанию
используется jsdom, который эмулирует поведение браузера в
Node.js. Однако для серверных приложений или приложений с использованием
других технологий можно изменить этот параметр на другие варианты,
например, на node для тестирования серверной логики.
Пример конфигурации:
module.exports = {
testEnvironment: 'node',
};
transformПараметр transform позволяет указать трансформеры,
которые будут использоваться для обработки файлов перед их
тестированием. Это полезно, когда необходимо работать с современным
синтаксисом JavaScript (например, ES6 или JSX), который нужно
преобразовать в совместимый с Node.js формат.
module.exports = {
transform: {
'^.+\\.jsx?$': 'babel-jest',
},
};
В этом примере используется трансформер babel-jest для
обработки всех файлов с расширением .js или
.jsx с помощью Babel.
moduleFileExtensionsЭтот параметр определяет, какие расширения файлов Jest будет искать,
когда будет импортировать модули. Это важно, если проект использует
нестандартные расширения файлов, такие как .ts или
.tsx в TypeScript-проектах.
Пример настройки:
module.exports = {
moduleFileExtensions: ['js', 'jsx', 'ts', 'tsx', 'json'],
};
testMatchНастройка testMatch позволяет указать шаблоны для
файлов, которые Jest будет считать тестами. Это может быть полезно, если
нужно изменять стандартный путь к тестовым файлам или использовать
нестандартные именования файлов.
Пример:
module.exports = {
testMatch: ['**/__tests__/**/*.test.js'],
};
В этом случае Jest будет искать тесты, расположенные в папке
__tests__ и имеющие расширение .test.js.
coverageDirectoryЭтот параметр указывает каталог, в который будут сохраняться отчеты о покрытии кода. Jest автоматически генерирует такие отчеты при запуске тестов, если включена настройка покрытия.
Пример:
module.exports = {
coverageDirectory: './coverage',
};
collectCoverageЕсли этот параметр установлен в true, Jest будет
собирать информацию о покрытии кода во время выполнения тестов. Это
полезно для оценки качества тестирования и поиска областей, которые не
охвачены тестами.
Пример:
module.exports = {
collectCoverage: true,
};
setupFilesПараметр setupFiles позволяет указать файлы, которые
должны быть выполнены перед запуском тестов. Это может быть полезно для
глобальных настроек, таких как подключение моков, настройка глобальных
переменных или подключение сторонних библиотек.
Пример:
module.exports = {
setupFiles: ['./jest.setup.js'],
};
В этом случае перед каждым тестом будет выполняться файл
jest.setup.js.
moduleNameMapperЭтот параметр позволяет маппировать пути к модулям на другие пути. Это полезно, когда необходимо использовать алиасы для путей или когда проект использует специфичные способы импорта.
Пример:
module.exports = {
moduleNameMapper: {
'\\.(css|less)$': 'identity-obj-proxy',
},
};
Этот пример показывает, как Jest может быть настроен для работы с модулями CSS или LESS, которые нужно маппировать на мок-объекты, так как тесты не нуждаются в реальной обработке стилей.
globalsЭтот параметр позволяет задавать глобальные переменные, которые могут быть использованы в тестах. Это полезно, если нужно определить специфичные настройки, например, для работы с глобальными объектами или значениями, которые нужны в тестах.
Пример:
module.exports = {
globals: {
MY_GLOBAL_VAR: true,
},
};
testPathIgnorePatternsЭтот параметр позволяет указать массив путей или регулярных выражений, которые Jest должен игнорировать при поиске тестов. Это полезно для исключения директорий с результатами сборки или других файлов, не связанных с тестами.
Пример:
module.exports = {
testPathIgnorePatterns: ['/node_modules/', '/build/'],
};
Jest позволяет комбинировать различные параметры для настройки более сложных сценариев. Например, если проект использует как JavaScript, так и TypeScript, можно настроить конфигурацию следующим образом:
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
transform: {
'^.+\\.tsx?$': 'ts-jest',
},
moduleFileExtensions: ['js', 'ts', 'tsx', 'json'],
coverageDirectory: './coverage',
collectCoverage: true,
};
В этом примере используется пресет ts-jest для поддержки
TypeScript, а также настройка для покрытия кода и других стандартных
параметров.
jest.config.js: В случае простых проектов можно
использовать команду Jest без явной конфигурации. Однако для более
сложных проектов, где необходимо настроить поведение тестов, важно
создать файл конфигурации.Файл jest.config.js является неотъемлемой частью любого
проекта с использованием Jest, поскольку он предоставляет гибкие
механизмы настройки тестовой среды и помогает эффективно управлять
процессом тестирования.