使用 jest 时如何设置 jsdom

How to setup jsdom when working with jest

我正在尝试从 AVA 迁移到 Jest。在AVA中可以设置ava.setup,其中设置jsdom环境。例如,创建 DOM 结构并执行必要的 polyfills (localStorage)。

我如何在 Jest 中完成它?目前,我在每个测试套件中都使用 beforeEach,感觉这不是最佳解决方案。

提前致谢!

好问题。

Jest 实际上附带 jsdom 并且环境已经配置。您可以使用 testEnvironment setting.

覆盖它

如果您需要设置环境的更多方面,您可以使用 setupTestFrameworkScriptFile setting 指向在所有测试 运行 之前执行的文件。

例如,如果您需要 window.yourVar 在 window 上用于所有测试,您可以将其添加到 package.json:

"jest": {
    "setupTestFrameworkScriptFile": "tests/setup.js"
}

并在 tests/setup.js:

Object.defineProperty(window, 'yourVar', { value: 'yourValue' });