如何使用 Jest 测试测试窗口对象

Yas*_*ser 5 reactjs jestjs

我正在尝试测试一个根据 window 对象中存在的值返回值的类。

window.test = 123;

我想将 window 对象的 test 属性模拟为 123 值以便能够正确测试。

我试过Object.defineProperty,使用 global 代替,但似乎没有任何效果。似乎是一个微不足道的问题,但无法在谷歌或其他地方找到答案。请指教。

Est*_*ask 4

如果window存在(即 Jest 与 JSDOM 一起运行,默认情况下完成),它应该是:

beforeEach(() => {
  window.test = 123;
});

afterEach(() => {
  delete window.test;
});
Run Code Online (Sandbox Code Playgroud)

如果它不存在,则为:

beforeEach(() => {
  global.window = { test: 123 };
});

afterEach(() => {
  delete global.window;
});
Run Code Online (Sandbox Code Playgroud)

根据是否window在其他地方使用,将其备份到临时变量 inbeforeEach并在 中恢复可能会有所帮助afterEach