什么是--env = jsdom

oct*_*ian 7 javascript jsdom jestjs react-native

我正在使用command运行本机应用程序的测试套件jest

测试将jest-runtime/build/index.js在该行的文件中失败

const wrapper = this._environment.runScript(transformedFile.script)[
(_script_transformer || _load_script_transformer()).default.EVAL_RESULT_VARIABLE];
Run Code Online (Sandbox Code Playgroud)

与错误:

TypeError: Cannot read property 'Object.<anonymous>' of null
Run Code Online (Sandbox Code Playgroud)

我的笑话版本是21.2.1

无论如何,经过一番谷歌搜索后,我发现有人在跑步jest --env=jsdom。我尝试了一下,然后我的测试套件开始工作。

但是这个选项是什么意思呢?

我知道jsdom是DOM和HTML标准的实现。

但这对开玩笑有用吗?这如何改变玩笑的行为,以便现在测试通过?

小智 10

由于jest是节点模块,并且在本地计算机(或CI环境)中而不是在浏览器中执行,因此它在节点上下文中运行。这意味着您可以在浏览器上下文中访问的全局变量,例如windowdocument不可用。因此,如果您在代码中访问这些全局对象(或任何其他特定localStorage于浏览器的功能,例如,),则测试将失败。该选项 --env=jsdom可确保为您的测试提供一个模拟浏览器环境,从而允许它们通过。