Я пытаюсь протестировать компонент React с помощью Jest.
Код компонента следующий.
import React, { PureComponent } from 'react';
import PropTypes from 'prop-types';
import { Text } from 'components';
class App extends PureComponent {
static propTypes = {
name: PropTypes.string.isRequired,
age: PropTypes.number.isRequired,
displayed: PropTypes.bool,
};
static defaultProps = {
displayed: true
};
render = () => {
if (!this.props.displayed) {
return null;
}
const text = `${ this.props.name } is ${ this.props.age } years old.`
return (
<span>
<Text
text={ text }
/>
</span>
);
}
}
export default App;
Код теста очень прост:
import React from 'react';
import { mount } from 'enzyme';
import App from './../App';
describe('App', () => {
let props;
let mountedApp;
const app = () => {
if (!mountedApp) {
mountedApp = mount(
<App { ...props } />
);
}
return mountedApp;
};
beforeEach(() => {
props = {
name: 'John',
age: 35,
displayed: undefined
};
mountedApp = undefined;
});
it('always renders a span', () => {
const spans = app().find('span');
expect(spans.length).toBeGreaterThan(0);
});
});
В моем проекте я использую некоторые общие компоненты, такие как текстовый компонент.Все пути к компонентам задаются в файле index.js.
Пример кода файла:
export Button from 'src/Common/Components/Button';
export Text from 'src/Common/Components/Text';
export Breadcrumb from 'src/Common/Components/Breadcrumb';
Это конфигурация Jest, которую я использую в файле package.json.
"jest": {
"setupTestFrameworkScriptFile": "./Common/Components/setupTests.js",
"moduleFileExtensions": ["js", "jsx", ""],
"moduleNameMapper": {
"components(.*)$": "<rootDir>/Common/Static/index.js"
}
}
Конфигурация псевдонима веб-пакета:
псевдоним: {components: path.resolve (__dirname, 'Common / Static / index.js'),},
Я выполняю 'npm test' через терминал, и тест завершается неудачно со следующим сообщением:
Test suite failed to run
Cannot find module 'src/Common/Components/Button' from 'index.js'
6 | export Button from 'src/Common/Components/Button';
7 | export Text from 'src/Common/Components/Text';
> 8 | export Breadcrumb from 'src/Common/Components/Breadcrumb';
| ^
at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:210:17)
at Object.<anonymous> (Common/Static/index.js:8:16)
Все пути правильные, и код удаляется, когда я удаляю тест.Я предполагаю, что Jest не может получить пути, включенные в index.js. Есть ли какие-либо предложения о том, как настроить Jest для решения этой проблемы?