Javascript 错误:未实现:window.scrollTo。如何从Jest测试中删除此错误? 错误:

Javascript 错误:未实现:window.scrollTo。如何从Jest测试中删除此错误? 错误:,javascript,reactjs,jestjs,Javascript,Reactjs,Jestjs,因为我们使用的是window.scrollTo(0,0) 还获取以下内容的未实现导航: window.location.replace(外部链接)相同的错误发生在.assign 我尝试用react router在谷歌上搜索解决方案,但所有示例都使用一些包含window.location的组件 有没有办法避免这个错误?还是把它藏起来 我做了一些研究,发现Facebook团队不会解决这个问题。运行jest测试时,是否有方法抑制这些错误/警告 我们的代码不会中断,否则所有测试都会通过。尝试使用--en

因为我们使用的是
window.scrollTo(0,0)

还获取以下内容的
未实现导航

window.location.replace(外部链接)
相同的错误发生在
.assign

我尝试用react router在谷歌上搜索解决方案,但所有示例都使用一些包含
window.location
的组件

有没有办法避免这个错误?还是把它藏起来

我做了一些研究,发现Facebook团队不会解决这个问题。运行
jest测试时,是否有方法抑制这些错误/警告


我们的代码不会中断,否则所有测试都会通过。

尝试使用
--env=jsdom
运行jest命令。这将模拟大多数浏览器功能并解决您的问题

设置测试环境的方法还有很多,请看:

更新 这适用于
窗口。滚动至
错误


如果您只是尝试获取
窗口。滚动到(0,0)
以在测试环境中正常工作,您可以在任何文件中实现它:

window.scrollTo=(x,y)=>{
document.documentElement.scrollTop=y;
}

*.test.js
文件中,调用具有
窗口的组件。滚动到

it("renders without crashing", () => {
  window.scrollTo = jest.fn()
})

使用create react app时,最好将功能添加到安装测试文件:

<project_name>\src\setupTests.js

这样,使用该功能的任何组件都将正确解析。

导入后,测试文件顶部的模拟如下:

window.scrollTo = jest.fn();
然后在描述中添加以下内容:

  afterAll(() => {
    jest.clearAllMocks();
  });
因此,如果您也在每次之后重置所有模拟,您将得到以下结果:

afterEach(() => {
    jest.resetAllMocks();
  });
  afterAll(() => {
    jest.clearAllMocks();
  });

您是否正在使用
--env=jsdom
参数运行jest?哦,这很有效!谢谢:我想把答案贴出来?我们仍然得到这个
错误:未实现窗口。滚动到
,但我将为此发布一个新问题。很高兴它成功了!呃,我可能说得太快了,我们实际上仍然没有实现
:导航
错误。。。我能够摆脱
滚动到
的错误。必须继续调查。
global.scrollTo=jest.fn()
update链接(qiita.com)运行良好
  afterAll(() => {
    jest.clearAllMocks();
  });
afterEach(() => {
    jest.resetAllMocks();
  });
  afterAll(() => {
    jest.clearAllMocks();
  });