在开玩笑中嘲笑global.window

问题描述 投票:8回答:1

我有一个在节点和浏览器上运行的函数,我想用jest测试:

const myFn = () => {
  if(typeof window !== 'object'){
     return 1;
  }
  return 2;
}

我如何能够将全局窗口对象设置为undefined,以测试节点分支,并返回1。

EG

  test('myTest', ()=> {
      global.window = undefined;
      expect(myFn()).toEqual(1); // result: 2
  });

我在这里尝试了这些建议没有成功:qazxsw poi

javascript reactjs jestjs
1个回答
7
投票

您可以尝试使用自v20.0.0开始提供的Mocking globals in Jest docblock来更改不同测试的环境。默认情况下,它使用@jest-environment,但您可以将其更改为使用jsdom。以下是他们的文档摘录:

node

参考:/** * @jest-environment jsdom */ test('use jsdom in this test file', () => { const element = document.createElement('div'); expect(element).not.toBeNull(); });

© www.soinside.com 2019 - 2024. All rights reserved.