我有这个组成部分:
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';
如何告诉玩笑如何处理相对路径?
问题不在于路径,它只是在寻找具有.js扩展名的模块,它是在jest配置中添加.jsx之后才起作用的:
"moduleFileExtensions": [ "js", "jsx" ]