首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在React-testing库中模拟window.close()

在React-testing库中模拟window.close()
EN

Stack Overflow用户
提问于 2020-09-28 04:08:33
回答 1查看 1.9K关注 0票数 1

我在网上搜索过,但我没有找到在react测试库甚至jest中模拟window.close()的方法。

代码语言:javascript
复制
const handleClose = () => {
window.opener.location.reload()
window.close()
}


<Button
  data-test-id="close"
  onClick={handleClose}
/>

如何实现button和window.close()和window.opener.location.reload()的onclick的测试用例覆盖率

我的测试用例如下

代码语言:javascript
复制
const wrapper = render( <CloseButton />);
const windowSpy = jest.spyOn(global, 'window', 'get');

const { queryByTestId } = wrapper;
fireEvent.click(queryByTestId('close');
expect(windowSpy.opener.location.relaod).toHaveBeenCalled(); 
expect(windowSpy.close).toHaveBeenCalled(); 

对于这最后一行代码'expect(windowSpy.close).toHaveBeenCalled();‘,我得到一个错误,说“接收的值必须是模拟或间谍函数。接收的值未定义”。

对于expect(windowSpy.opener.location.relaod).toHaveBeenCalled();//,它显示未定义windowSpy.opener。

请来人帮帮忙!

EN

回答 1

Stack Overflow用户

发布于 2020-09-28 04:13:41

你只是在模仿window,但是你没有提供任何实现。

这应该会有帮助:

代码语言:javascript
复制
windowSpy.mockImplementation(() => ({
  close: jest.fn(),
  opener: {
      location: {
          reload: jest.fn(),
      }
  }
}));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64092855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档