如何使用玩笑测试来测试窗口对象

时间:2018-10-08 13:16:45

标签: reactjs jestjs

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

window.test = 123;

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

我尝试使用Object.defineProperty,而是使用global,但是似乎没有任何效果。似乎是一个琐碎的问题,但无法在Google或其他地方找到答案。请指教。

1 个答案:

答案 0 :(得分:0)

window存在的情况下(即Jest与JSDOM一起运行,默认情况下已完成),

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

afterEach(() => {
  delete window.test;
});

如果不存在,则为:

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

afterEach(() => {
  delete global.window;
});

根据是否在其他地方使用window,将其备份到beforeEach中的临时变量并恢复到afterEach中可能是有益的。