Webpack Jest测试失败,未定义窗口

Webpack Jest测试失败,未定义窗口,webpack,jestjs,yarnpkg,Webpack,Jestjs,Yarnpkg,我正试图从最先进的web开发学习React/Redux开始 现在,我正忙于让测试运行。由于某种原因,玩笑不能成功 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: w

我正试图从最先进的web开发学习React/Redux开始

现在,我正忙于让测试运行。由于某种原因,玩笑不能成功

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)
任务:前端:测试
纱线笑话v1.0.2
$“/Users/gunnar/git/app.oakstair.se/frontend/node_modules/.bin/jest”
src/containers/App/App.test.js失败
● 测试套件无法运行
ReferenceError:未定义窗口
反对


在您的包中。json添加
窗口
类似全局类似的内容

“开玩笑”:{
“详细”:正确,
“预设”:“反应本机”,
“setupFiles”:[“/jest/setup.js”],
“testRegex”:“(/tests/*.\\(test | spec))\\(ts | tsx | js)$”,
“transformIgnorePatterns”:[
“节点_模块/(?!(玩笑-)?反应本机|洛蒂反应本机)”
],
“全球”:{
“窗口”:{}
}

}
我也有同样的问题,我不认为修改globals是解决这个问题的方法。问题是因为在我的jest配置中,我将
testEnvironment
设置为
node
,而它本应该是
jsdom
。对我来说,该设置位于react starter应用程序定义的package.json中。

2021(Jest 27) Jest的
testEnvironment
默认值过去是
jsdom
。它最近从版本27开始更改为
节点

您可以在配置文件中设置
testEnvironment:'jsdom'
,以继续使用jsdom

然而,
“节点”
似乎要快得多,所以您应该尽可能模拟浏览器API


你能添加你的测试代码吗?我添加了两张图片。我可以公开回购协议,但它相当大,因为它基于我购买的react/redux模板,其中包含很多!是否使用jsdom运行它?这应该是对象而不是布尔变量:```窗口:{}``不幸的是,create react应用程序不支持以这种方式配置全局变量。有什么建议吗?@Faust看到JacksonHaenchen的回答谢谢,这帮我解决了问题!For info
jsdom
是默认值(请参阅),除非您已覆盖它(就像在
create react app
中那样)如果需要支持canvas,则需要将
TestenEnvironment
设置为
environment jsdom 14th
并使用
npm install——save dev jest environment jsdom 14th
安装它,如果使用react native,很可能您正在使用
预设:react native
jest配置,它覆盖默认值以排除DOM: