Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何抑制节点上下文中的window.function调用,例如未实现:window.scrollTo_Javascript_Reactjs_Jestjs_Js Scrollto - Fatal编程技术网

Javascript 如何抑制节点上下文中的window.function调用,例如未实现:window.scrollTo

Javascript 如何抑制节点上下文中的window.function调用,例如未实现:window.scrollTo,javascript,reactjs,jestjs,js-scrollto,Javascript,Reactjs,Jestjs,Js Scrollto,一位同事实现了ScrollToTop组件,该组件具有以下功能: componentDidMount() { window && window.scrollTo && window.scrollTo(0, 0) } 在某些情况下,只需将页面滚动到顶部 但是,在运行测试时,测试会周期性地出错,并且未实现:window.scrollTo(底部是完整的错误堆栈) 我发现window.scrollTo不存在于节点上下文或jest测试中。如何抑制在非浏览器上下文中滚

一位同事实现了ScrollToTop组件,该组件具有以下功能:

componentDidMount() {
    window && window.scrollTo && window.scrollTo(0, 0)
}
在某些情况下,只需将页面滚动到顶部

但是,在运行测试时,测试会周期性地出错,并且未实现:window.scrollTo(底部是完整的错误堆栈)

我发现window.scrollTo不存在于节点上下文或jest测试中。如何抑制在非浏览器上下文中滚动的尝试?或者我应该如何处理这个全球性的玩笑

console.error node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/virtual-console.js:29
  Error: Not implemented: window.scrollTo
      at module.exports (/src/argos-r/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/browser/not-implemented.js:9:17)
      at /src/argos-r/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/browser/Window.js:594:7
      at ScrollToTop.scrollTo [as componentDidMount] (/src/argos-r/src/components/ScrollToTop.js:6:45)
      at commitLifeCycles (/src/argos-r/node_modules/react-dom/cjs/react-dom.development.js:17334:22)
      at commitAllLifeCycles (/src/argos-r/node_modules/react-dom/cjs/react-dom.development.js:18736:7)
      at HTMLUnknownElement.callCallback (/src/argos-r/node_modules/react-dom/cjs/react-dom.development.js:149:14)
      at invokeEventListeners (/src/argos-r/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:193:27)
      at HTMLUnknownElementImpl._dispatch (/src/argos-r/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:119:9)
      at HTMLUnknownElementImpl.dispatchEvent (/src/argos-r/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:82:17)
      at HTMLUnknownElementImpl.dispatchEvent (/src/argos-r/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/nodes/HTMLElement-impl.js:30:27) undefined
console.error node_modules/react-dom/cjs/react-dom.development.js:506

你能不能不说
if(window)
try/catch将调用包装成
try/catch
你可以在测试开始时说window.scrollTo=()=>{}现在它已经被定义了,没有什么可以抱怨的,因为它是一个全新的函数。通过这种方式,你甚至可以在lambda主体中添加一个hendler,以防你检查它是否被调用。你可以不仅仅说
if(window)
将调用包装在
try/catch
中,你可以在测试开始时说window.scrollTo=()=>{}现在已经定义了它,没有什么可以抱怨的,因为它是一个全新的函数。通过这种方式,您甚至可以在lambda主体中添加一个hendler,以防您需要检查它是否已被调用