'globalThis' 未定义 Jest 测试用例

'globalThis' underfined for Jest test cases

我在我的 React WebApp 中使用 globalThis 属性 具体 globalThis.scrollTo(0,0)。

我正在使用 Jest 和 Enzyme 进行单元测试。

截至测试用例失败,因为它无法识别 globalThis 并表示 'globalThis' 未定义。

有没有办法将 globalThis 引入到测试中,就像 jsdom 对 window 等所做的那样?

例如

--abc.tsx--

const abc: React.FC<CustomProps> = props => {
useEffect(() => {
globalThis?.scrollTo(0,0);
}
}

--abcTest.tsx--

wrapper = mount(<abc/>);

mount 产生错误 "globalThis" 未定义

globalThis needs node version 12+. I use n 作为节点版本管理。

console.log(globalThis);

对于 node/10.16.2,出现错误:

console.log(globalThis);
            ^

ReferenceError: globalThis is not defined

对于node/12.6.1,得到:

Object [global] {
  global: [Circular],
  clearInterval: [Function: clearInterval],
  clearTimeout: [Function: clearTimeout],
  setInterval: [Function: setInterval],
  setTimeout: [Function: setTimeout] { [Symbol(util.promisify.custom)]: [Function] },
  queueMicrotask: [Function: queueMicrotask],
  clearImmediate: [Function: clearImmediate],
  setImmediate: [Function: setImmediate] {
    [Symbol(util.promisify.custom)]: [Function]
  }
}

您可以将这些代码添加到顶部

!function(t){function e(){var e=this||self;e.globalThis=e,delete t.prototype._T_}"object"!=typeof globalThis&&(this?e():(t.defineProperty(t.prototype,"_T_",{configurable:!0,get:e}),_T_))}(Object);

More details