相关疑难解决方法(0)

如何使用Jest模拟JavaScript窗口对象?

我需要测试一个在浏览器中打开新选项卡的函数

  openStatementsReport(contactIds) {
    window.open(`a_url_${contactIds}`);
  }
Run Code Online (Sandbox Code Playgroud)

我想模拟窗口的open函数,这样我就可以验证正确的URL是否传递给open函数.

使用Jest,我不知道如何模仿窗口.我尝试使用模拟函数设置window.open但这种方式不起作用.以下是测试用例

it('correct url is called', () => {
  window.open = jest.fn();
  statementService.openStatementsReport(111);
  expect(window.open).toBeCalled();
});
Run Code Online (Sandbox Code Playgroud)

但它给了我错误

expect(jest.fn())[.not].toBeCalled()

    jest.fn() value must be a mock function or spy.
    Received:
      function: [Function anonymous]
Run Code Online (Sandbox Code Playgroud)

我应该怎么做测试用例?任何建议或提示表示赞赏

javascript mocking jestjs

60
推荐指数
10
解决办法
6万
查看次数

标签 统计

javascript ×1

jestjs ×1

mocking ×1