我刚刚开始使用 Jest 测试框架,虽然直接的单元测试工作正常,但我在测试其模块(通过 babel+webpack 的 ES 模块)中需要 HTML 文件的任何组件时遇到大量问题。
这是一个例子:
import './errorHandler.scss';
import template from './errorHandler.tmpl';
class ErrorHandler {
...
我正在加载我在 Jest 的package.json
配置中设置的组件特定 SCSS 文件以返回一个空对象,但是当 Jest 尝试运行该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)
我的 Jest 配置package.json
如下:
"jest": {
"setupTestFrameworkScriptFile": "<rootDir>/test/setupFile.js",
"moduleDirectories": ["node_modules"],
"moduleFileExtensions": ["js", "json", "html", "scss"],
"moduleNameMapper": {
"^.+\\.scss$": "<rootDir>/test/styleMock.js"
}
}
似乎 webpackhtml-loader
不能与 Jest 一起正常工作,但我找不到任何解决方案来解决这个问题。
有谁知道我怎样才能让这些html-loader
import
在我的测试中发挥作用?他们加载了我的 lodash 模板标记,我宁愿有时在我的.js
文件中没有这些大量的 HTML 块,所以我可以省略这import template from x
部分。
PS:这不是一个 React 项目,只是普通的 webpack、babel、es6。