Я пытаюсь протестировать React with Jest. Компоненты импортируют другие компоненты из файла индекса, который отображает все компоненты, этот файл использует функцию require.context, которая не нравится jest. Я пытался найти решение, высмеивающее требования к файлу индекса, но у меня возникли проблемы с его работой.
TypeError: require.context не является функцией
> 1 | const req = require.context(".", true, /\.\/[^/]+\/[^/]+\/index\.js$/);
Индексный файл:
const req = require.context(".", true, /\.\/[^/]+\/[^/]+\/index\.js$/);
req.keys().forEach(key => {
const componentName = key.replace(/^.+\/([^/]+)\/index\.js/, "$1");
module.exports[componentName] = req(key).default;
});
Я импортирую компоненты следующим образом:
import { AuthFormWrapper, Button } from '../../../components';
Опция moduleNameMapper в конфигурации jest:
"moduleNameMapper": {
"^components$": "<rootDir>/__tests__/setup/__mocks__/componentMock.js"
},
Файл макета компонента:
import React from 'react'
import PropTypes from 'prop-types'
module.exports = new Proxy({}, {
get: (target, property) => {
const Mock = props => <span>{props.children}</span>;
Mock.displayName = property;
Mock.propTypes = {
children: PropTypes.any,
};
return Mock
},
});