我正在尝试将Jest和Enzyme添加到React webpack项目中。
一切正常,直到我将测试添加到组件,并使用样式表导入谷歌字体。
我得到的错误是:
● Test suite failed to run
/Users/dev/Code/Git/react-redux-webpack/src/App.sass:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){@import url('https://fonts.googleapis.com/css?family=Barlow+Condensed')
^
SyntaxError: Invalid or unexpected token
sass文件如下:
@import url('https://fonts.googleapis.com/css?family=Barlow+Condensed')
body
background: #f9f9f9
color: #444444
font-family: 'Barlow Condensed', sans-serif
text-align: center
.container
width: 100%
max-width: 960px
margin: 0 auto
.container__logo--image
position: absolute
top: 50%
left: 50%
margin-left: -75px
margin-top: -75px
我的.babelrc:
{
"presets": [
"react",
"stage-0",
[
"env",
{
"targets": {
"node": "6.10",
"browsers": ["last 2 versions", "safari >= 7"]
}
}
]
],
"plugins": ["transform-class-properties"]
}
我拥有webpack中所有必需的加载器,我可以整天构建和服务sass而没有任何问题。这是我正在努力的Jest的介绍。
我已经使用当前的代码状态推送了一个分支https://github.com/nombienombie/react-redux-webpack/tree/feature/jest-unit-tests
答案 0 :(得分:6)
我在package.json中添加了以下内容:
"jest": {
"moduleNameMapper": {
"\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/__mocks__/fileMock.js",
"\\.(css|sass)$": "<rootDir>/__mocks__/styleMock.js"
}
},
并在 mocks 文件夹中添加以下内容:
<强> fileMock.js 强>
module.exports = 'test-file-stub';
<强> styleMock.js 强>
module.exports = {}
答案 1 :(得分:3)
由于它们不是由Webpack编译的,因此测试导入的静态资产应该以某种方式处理。
典型的方法包括嘲笑它们,因为它们与测试目的无关。 Jest公开moduleNameMapper
选项以轻松模拟/代理它们。
答案 2 :(得分:0)
在@哈里(Harry)给出的答案上再增加一件事,
如果您使用的是jest.config.js
文件,请添加它而不是package.json
moduleNameMapper: {
'\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$':
'<rootDir>/src/__mock__/file-mock.js',
'\\.(css|less)$': '<rootDir>/src/__mock__/style-mock.js',
},