【发布时间】:2018-06-25 11:34:26
【问题描述】:
我正在使用 Jest 和 Enzyme 来测试我的应用程序。我收到错误:
FAIL app/containers/Navbar/NavbarContainer.test.js
● Test suite failed to run
app/components/Navbar/styles.css: Unexpected token (1:0)
> 1 | @import "../../styles/base/_variables";
| ^
2 |
3 | .navbar{
4 | width: $navbar-width;
这是我在 package.json 中的 Jest 配置:
"jest": {
"verbose": true,
"globals": {
"env": {
"isProd": false,
"isDev": true,
"command": "start"
}
},
"moduleNameMapper": {
"\\.(css)$": "identity-obj-proxy"
},
"moduleFileExtensions": [
"js",
"jsx",
"json",
"css"
],
"modulePaths": [
"/app"
],
"moduleDirectories": [
"node_modules"
],
"verbose": true,
"setupFiles": [
"./setupJest.js"
],
"setupTestFrameworkScriptFile": "<rootDir>/setupTests.js"
}
我在设置应用程序时遵循指南,我发现identity-obj-proxy 将有助于模拟 css-modules 功能,但这不适用于我的情况。请让我知道我在这里缺少什么。
附:这不是 ES6 模块导入。诉讼失败,因为 css 中有一个@import。
【问题讨论】:
-
@elbecita 这个问题是关于 ES6 模块导入的,可以通过
babel-jest解决。这是关于css-modules的@imports。如果您看到相同的内容,请删除可能的重复标志吗? -
是的,很抱歉,我读得太快了。这可能有帮助吗? stackoverflow.com/questions/39418555/… 这家伙有错误,因为 @import 在一个较少的文件中,但这听起来真的像你的问题吗?
-
基本上解决方案是创建一个空模块并告诉 jest 对于任何 css 文件它应该使用该空模块。 (因为“identity-obj-proxy”似乎不起作用)。
-
@elbecita
identity-obj-proxy是添加模拟文件的高级解决方案。检查答案中的 cmets,这家伙通过使用相同的插件解决了他的问题。 -
在@import 语句中包含扩展名(.css)是否有效?
标签: javascript reactjs jestjs css-modules