【发布时间】:2017-04-19 15:23:06
【问题描述】:
我正在尝试从 AVA 迁移到 Jest。在 AVA 中可以设置ava.setup,在其中设置jsdom 环境。例如,创建 DOM 结构并进行必要的 polyfills (localStorage)。
我如何在 Jest 中做到这一点?目前,我在每个测试套件中都使用beforeEach,感觉不是最好的解决方案。
提前致谢!
【问题讨论】:
标签: javascript jestjs jsdom ava
我正在尝试从 AVA 迁移到 Jest。在 AVA 中可以设置ava.setup,在其中设置jsdom 环境。例如,创建 DOM 结构并进行必要的 polyfills (localStorage)。
我如何在 Jest 中做到这一点?目前,我在每个测试套件中都使用beforeEach,感觉不是最好的解决方案。
提前致谢!
【问题讨论】:
标签: javascript jestjs jsdom ava
好问题。
Jest 实际上附带了jsdom 并且环境已经配置好了。您可以使用 testEnvironment setting 覆盖它。
如果您需要设置环境的更多方面,您可以使用 setupTestFrameworkScriptFile setting 指向在所有测试运行之前执行的文件。
例如,如果您需要 window.yourVar 在所有测试的窗口中可用,您可以将其添加到您的 package.json:
"jest": {
"setupTestFrameworkScriptFile": "tests/setup.js"
}
在测试/setup.js 中:
Object.defineProperty(window, 'yourVar', { value: 'yourValue' });
【讨论】:
setupFilesAfterEnv 现在推荐。