Использование с Webpack
Jest может использоваться в проектах, использующих webpack для управления ресурсами, стилями и компиляцией. Webpack способен предложить некоторые уникальные возможности, по сравнению с другими инструментами, поскольку он объединяется непосредственно с вашим приложением, позволяя управлять таблицами стилей, дополнительными элементами, такими как изображения и шрифты, а также обширной экосистемой компилируемых в JavaScript языков и инструментов.
Webpack пример
Давйте начнем с привычной конфигурации webpack и адаптируем ее для использования с Jest.
module.exports = {
module: {
rules: [
{
test: /\.jsx?$/,
exclude: ['node_modules'],
use: ['babel-loader'],
},
{
test: /\.css$/,
use: ['style-loader', 'css-loader'],
},
{
test: /\.gif$/,
type: 'asset/inline',
},
{
test: /\.(ttf|eot|svg)$/,
type: 'asset/resource',
},
],
},
resolve: {
alias: {
config$: './configs/app-config.js',
react: './vendor/react-master',
},
extensions: ['.js', '.jsx'],
modules: [
'node_modules',
'bower_components',
'shared',
'/shared/vendor/modules',
],
},
};
Если вы располагаете файлами, которые трансформируются Babel, вы можете включить поддержку Babel путем установки плагина babel-jest
. Non-Babel JavaScript transformations can be handled with Jest's transform
config option.
Обработка статических активов
Далее, настроим Jest для корректной обработки активов стилей и изображений. Обычно эти файлы не особо полезны в тестах, так что мы можем безопасно их имитировать. However, if you are using CSS Modules then it's better to mock a proxy for your className lookups.
module.exports = {
moduleNameMapper: {
'\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$':
'<rootDir>/__mocks__/fileMock.js',
'\\.(css|less)$': '<rootDir>/__mocks__/styleMock.js',
},
};
And the mock files themselves:
module.exports = {};
module.exports = 'test-file-stub';