Jest.js 找不到名称“global”

xwmevbvl  于 2023-03-10  发布在  Jest
关注(0)|答案(1)|浏览(219)

Angular 15项目使用Jest测试框架错误

我有一个使用jest(v28.1.3)进行单元测试的Angular 15项目。
我尝试测试一个使用setTimeout()函数的方法,根据documentation,它简单到

jest.useFakeTimers();
jest.spyOn(global, 'setTimeout');
...
//call component method
expect(setTimeout).toHaveBeenCalledTimes(1);
expect(setTimeout).toHaveBeenLastCalledWith(expect.any(function), 100)

当我尝试使用上面的代码运行这个测试时,我在控制台中得到了以下信息:
失败src/app/data-flow/data-flow.component.spec.ts ●测试套件运行失败
src/应用程序/数据流/数据流组件规范ts:112:18 -错误TS 2304:找不到名称“global”。
112 jest.spyOn(全局的,“设置超时”);
测试套件:1次未通过,共1次测试:共0个快照:0总计时间:9.634 s运行了匹配/data-flow.component/i的所有测试套件。
有没有想过是什么原因造成的?

ffx8fchx

ffx8fchx1#

我不得不安装@types/node,并在“jest”之外的compilerOption类型中使用它,因为“global”来自node(受此问题上一个答案的启发:https://github.com/stephenh/ts-proto/issues/70

"compilerOptions": {
    "types": ["jest", "node"],
...}

相关问题