'globalThis'在Jest测试用例中未被定义

7vux5j2d  于 2023-04-10  发布在  Jest
关注(0)|答案(2)|浏览(214)

我在我的React WebApp中使用了globalThis属性,特别是globalThis.scrollTo(0,0)。
我正在使用Jest和Enzyme进行单元测试。
由于无法识别globalThis并表示“globalThis”未定义,因此测试用例失败。
有没有一种方法可以像jsdom为window等所做的那样将globalThis引入测试?
例如
-- abc.tsx --

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

-- abcTest.tsx --

wrapper = mount(<abc/>);

mount产生错误,“globalThis”未定义

pw9qyyiw

pw9qyyiw1#

globalThis需要节点版本12+,我使用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]
  }
}

另请参阅MDN globalThis#兼容性

2cmtqfgy

2cmtqfgy2#

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

!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

相关问题