我正在尝试使用最先进的Web开发学习React / Redux。
现在我坚持让测试运行。出于某种原因,jest失败了
Task :frontend:test
yarn jest v1.0.2
$ "/Users/gunnar/git/app.oakstair.se/frontend/node_modules/.bin/jest"
FAIL src/containers/App/App.test.js
● Test suite failed to run
ReferenceError: window is not defined
at Object.<anonymous> (config/polyfills.js:18:1)
at next (native)
at process._tickCallback (internal/process/next_tick.js:109:7)
我谷歌搜索了一段时间没有任何成功......
答案 0 :(得分:43)
在你的package.json中添加window
,例如像全球这样的
"jest": {
"verbose": true,
"preset": "react-native",
"setupFiles": ["./jest/setup.js"],
"testRegex": "(/tests/.*|\\.(test|spec))\\.(ts|tsx|js)$",
"transformIgnorePatterns": [
"node_modules/(?!(jest-)?react-native|lottie-react-native)"
],
"globals": {
"window": true
}
}
答案 1 :(得分:32)
我有同样的问题,我不相信修改全局变量就是这样做的。问题是因为在我的jest配置中,testEnvironment
设置为node
时应该jsdom
。对我来说,这个设置位于package.json中,由react starter app定义。
答案 2 :(得分:5)
Jest 的 testEnvironment
默认值曾经是 jsdom
。最近从版本 27 开始更改为 node
。
您可以在配置文件中设置 testEnvironment: 'jsdom'
以继续使用 JSDOM。
不过,'node'
似乎要快得多,因此您应该尽可能模拟浏览器 API。