我正在使用命令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标准的实现。
但这对开玩笑有用吗? 这如何改变玩笑的行为,以便现在测试通过?
答案 0 :(得分:2)
由于jest是节点模块,并且在本地计算机(或CI环境)中而不是在浏览器中执行,因此它在节点上下文中运行。这意味着您无法在浏览器上下文中访问的全局变量,例如window
或document
。因此,如果您在代码内访问这些全局对象(或任何其他浏览器特定的功能,例如localStorage
),则测试将失败。 option --env=jsdom
确保为您的测试提供模拟的浏览器环境,从而允许它们通过。