什么是--env = jsdom

时间:2018-08-21 17:14:12

标签: javascript react-native jestjs jsdom

我正在使用命令jest为我的本地应用程序运行测试套件。

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

const wrapper = this._environment.runScript(transformedFile.script)[
(_script_transformer || _load_script_transformer()).default.EVAL_RESULT_VARIABLE];

出现错误:

TypeError: Cannot read property 'Object.<anonymous>' of null

我开玩笑的版本是21.2.1

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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