我刚刚开始使用Jest测试框架,虽然直接进行单元测试工作正常,但我有大量问题测试其模块(通过babel + webpack的ES模块)需要HTML文件的任何组件。如何在Jest测试中使用我的webpack的html-loader导入?
下面是一个例子:
import './errorHandler.scss';
import template from './errorHandler.tmpl';
class ErrorHandler {
...
我加载我开玩笑的package.json
配置已经设置为返回一个空的对象,但该组件具体SCSS文件时,玩笑试图运行import template from './errorHandler.tmpl';
线折断说:
/Users/jannis/Sites/my-app/src/scripts/errorHandler/errorHandler.tmpl.html:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){<div class="overlay--top">
^
SyntaxError: Unexpected token <
at transformAndBuildScript (node_modules/jest-runtime/build/transform.js:284:10)
我从package.json
玩笑配置如下:
"jest": {
"setupTestFrameworkScriptFile": "<rootDir>/test/setupFile.js",
"moduleDirectories": ["node_modules"],
"moduleFileExtensions": ["js", "json", "html", "scss"],
"moduleNameMapper": {
"^.+\\.scss$": "<rootDir>/test/styleMock.js"
}
}
似乎webpack html-loader
与Jest无法正常工作,但我无法找到解决此问题的任何解决方案。
有谁知道我可以如何让这些html-loader
import
s在我的测试中工作?他们加载我的lodash模板标记,我宁愿没有这些有时在我的.js
文件中大量的HTML块,所以我可以省略import template from x
部分。
PS:这不是一个反应项目,只是简单的webpack,babel,es6。
这是非常有益的,谢谢你。我也想补充一点,你也可以用'underscore-template-loader'来做到这一点。 – Allen