Djo*_*ker 4 webpack jestjs babeljs babel-jest
最近我将我的一个项目转换为webpack和babel.它由淘汰组件制成.
我在运行单元测试时遇到了问题.如果我在tests文件夹中有一个文件, 比如
import component from '../custom-options';
test('adds 1 + 2 to equal 3', () => {
expect(3).toBe(3);
});
Run Code Online (Sandbox Code Playgroud)
问题是组件是一个需要排序的模块
var htmlString = require('./custom-options.html');
Run Code Online (Sandbox Code Playgroud)
当我尝试运行网站本身它运行正常,因为原始加载器配置为此需要.但是,当我运行jest测试输出时:
custom-options.html:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){?<div id="custom-options-containe" class="mod--custom-options">
^
SyntaxError: Unexpected token <
at transformAndBuildScript (node_modules\jest-cli\node_modules\jest-runtime\build\transform.js:284:10)
at custom-options.js:13:38
at Object.<anonymous> (custom-options.js:93:3)
Run Code Online (Sandbox Code Playgroud)
知道为什么会这样吗?我认为开玩笑是错误的,但我已经尝试用Ava将其解决,结果是一样的.我开始认为这是个问题.
我正在用babel-jest预处理器开玩笑.
你可以在你的jest设置中为所有无JS文件创建一个全局模拟,package.json
如下所示:
"jest": {
"moduleNameMapper": {
"^.+\\.html$": "<rootDir>/__mocks__/htmlMock.js"
}
}
Run Code Online (Sandbox Code Playgroud)
然后使用以下内容在项目根目录htmlMock.js
的__mocks__
文件夹中创建文件:
module.exports = 'test-file-stub';
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请查看此处
如果你想为每个测试用例做一个特殊的模拟,你也可以在你的测试中模拟这样的文件:
jest.mock('path/from/test/to/custom-options.html', ()=> 'test-file-stub');
Run Code Online (Sandbox Code Playgroud)
请注意,路径相对于测试文件而不是您要测试的文件.
归档时间: |
|
查看次数: |
810 次 |
最近记录: |