Jest:找不到要测试的模块内部所需的模块(相对路径)
Jest: cannot find module required inside module to be tested (relative path)
我有这个组件:
import React from 'react';
import VideoTag from './VideoTag';
import JWPlayer from './JWPlayer';
class VideoWrapper extends React.Component {
//... component code
}
基于某些逻辑在内部呈现另一个组件(VideoTag 或 JWPlayer(,但是当我尝试在开玩笑文件中测试它时,出现错误:
找不到模块"./视频标记">
这三个 coponent 位于同一个目录中,这就是为什么当我转译它并在浏览器中看到它运行时它实际上有效,但看起来 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';
我如何告诉开玩笑如何处理相对路径?
我还必须将moduleNameMapper
添加到我的 tsconfig 路径映射的开玩笑配置中,以便让我的测试识别我设置的路径映射。像这样:
"moduleNameMapper": {
"^yourPath/(.*)": "<rootDir>''yourPath''$1"
}
希望这会帮助某人!
问题不在于路径,它只寻找扩展名为.js模块,它在开玩笑配置中添加 .jsx 后工作:
"moduleFileExtensions": [
"js",
"jsx"
]
您不需要在这两个选项的配置中添加 moduleFileExtensions ,因为 jest 使用 ['js', 'jsx', 'json', 'node'] 作为默认文件扩展名。(除非您想专门跳过任何选项(
就我而言,问题是import
也区分大小写。检查您的import
语句并确保它与文件名完全匹配!
对于其他人最终试图将 Jest 与 TypeScript 一起使用: 您需要在moduleFileExtensions
中包含ts
,例如:
"moduleFileExtensions": [
"js",
"jsx",
"json",
"node",
"ts"
]
您还需要对*.ts
文件进行转换:
transform: {
"^.+''.vue$": "vue-jest",
"^.+''.js$": "babel-jest",
"^.+''.(ts|tsx)$": "ts-jest"
},
相关文章:
- 我可以获得相对于被点击元素的确切点击位置吗
- Javascript,访问一个主要对象模块模式中的每个对象
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 如何从模块链中调用函数.导出到节点中
- 尽管链接成功并已成功下载,但未找到NPM模块
- 如何访问节点模块中具有相对路径的文件
- 流星 ES6 模块相对路径
- 是否可以要求项目目录外部的模块没有相对路径
- Jest:找不到要测试的模块内部所需的模块(相对路径)
- 防止来自特定文件夹中模块的相对需求调用
- 定义模块中的worker是使用绝对路径而不是相对路径上传的,为什么
- 与RequireJS模块/包的相对路径
- TypeScript 1.8在AMD风格模块中的相对模块名解析与RequireJS 2.1
- 如何在node.js中解析自定义模块的绝对或相对文件路径?
- 加载需要带有相对路径的模块
- 因果报应:在相对路径中找不到模块
- 使用相对路径加载模块失败
- Grunt-browserify+mapify+coffeescript =模块没有找到相对路径
- 修复在Browserify中找不到本地相对要求的模块
- 如何在所有模块中使用角度 1.5 中的相对 url