我有这个组件:
import React from 'react';
import VideoTag from './VideoTag';
import JWPlayer from './JWPlayer';
class VideoWrapper extends React.Component {
//... component code
}
基于某种逻辑在内部呈现另一个组件(VideoTag 或 JWPlayer)但是当我尝试在一个笑话文件中测试它时我得到错误:
找不到模块“./VideoTag”
这三个组件在同一个目录中,这就是为什么当我转译它并在浏览器中看到它在运行时它实际上起作用的原因,但看起来 Jest 在解析这些相对路径时遇到了问题,这是 jest 文件:
jest.dontMock('../src/shared/components/Video/VideoWrapper.jsx');
import React from 'react';
import ReactDOM from 'react-dom';
TestUtils from 'react-addons-test-utils';
import VideoWrapper from '../src/shared/components/Video/VideoWrapper.jsx';
describe('VideoWrapper tests', () => {
it('Render JWPlayer', () => {
let vWrapper = TestUtils.renderIntoDocument(
< VideoWrapper model={model} />
);
});
});
错误在行:
import VideoWrapper from '../src/shared/components/Video/VideoWrapper.jsx';
我如何告诉 jest 如何处理相对路径?
原文由 ferflores 发布,翻译遵循 CC BY-SA 4.0 许可协议
问题不在于路径,它正在寻找仅具有 .js 扩展名的模块,在 jest 配置中添加 .jsx 后它起作用了: