全球之前一切都是开玩笑?

Eva*_*nss 10 javascript jestjs

我需要使用 React 测试库和 Jest 在测试中模拟不同的窗口大小。

目前我必须beforeAll在每个测试文件中都包含此内容:

import matchMediaPolyfill from 'mq-polyfill';

beforeAll(() => {
  matchMediaPolyfill(window)
  window.resizeTo = function resizeTo(width, height) {
    Object.assign(this, {
      innerWidth: width,
      innerHeight: height,
      outerWidth: width,
      outerHeight: height,
    }).dispatchEvent(new this.Event('resize'))
  }
})
Run Code Online (Sandbox Code Playgroud)

我这样使用:

it('does something at small screen sizes', async () => {
  window.resizeTo(320, 800);
  // actual test here
Run Code Online (Sandbox Code Playgroud)

我可以有一个beforeAll适用于项目中每个测试文件的全局变量吗?

文档提到globalsetuphttps ://jestjs.io/docs/en/configuration#globalsetup-string

然而,它会出错,因为它无法识别该beforeAll功能。在我看来,该选项是用于设置环境但不向测试文件添加某些内容?

Est*_*ask 7

globalSetup在另一个进程中运行,无法访问beforeAll测试范围中的变量或其他变量。它用于在开始任何测试之前进行初始化,例如设置服务器,如文档所示。

它是setupFiles在测试过程中运行的。beforeAll应该在 Jest 环境初始化后执行,因此应该将其移至setupFilesAfterEnv.

  • 不,它是 globalSetup,文档中有一个示例 (2认同)