使用Jest我得到:找不到'jasmine'的类型定义文件

xav*_*ier 8 jestjs angular

我正在使用Angular 7和Jest。当我与一起开玩笑时--codecoverage,我所有的测试都通过了,但是构造器中的许多分支没有被覆盖(类似于:构造器上的分支未覆盖)。

我花了很多时间检查所有地方如何解决它,似乎不得不升级jest-preset-angular到版本7。完成之后,我的所有测试套件都无法运行,并显示以下消息:

src/app/whatever.component.spec.ts
 ? Test suite failed to run

 TypeScript diagnostics (customize using `[jest-config].globals.ts-jest.diagnostics` option):
 error TS2688: Cannot find type definition file for 'jasmine'.
Run Code Online (Sandbox Code Playgroud)

我一直在寻找周围,我想申请我找到了解决方案(如无法找到“茉莉花”类型的定义文件错误TS2688错误:无法找到“开玩笑”类型的定义文件,...),但没有工作。

我在这里复制package.json中的一些依赖项:

    "jest": "^24.1.0",
    "jest-junit": "^6.3.0",
    "jest-preset-angular": "^7.0.1",
    "ts-node": "~7.0.1",
    "tslint": "~5.9.1",
    "typescript": "3.2.4"
Run Code Online (Sandbox Code Playgroud)

我以前的版本是:

    "jest-preset-angular": "^6.0.2",
Run Code Online (Sandbox Code Playgroud)

我不知道我可以提供哪些其他信息。如果有遗漏,如果您能在拒绝投票之前(实际上是代替)告诉我,我将不胜感激。

更新:我从Angular 6和Jasmine开始了我的项目,并将其更新为Angular 7和Jest。我不知道这是否是重要信息。

谢谢!

小智 11

转到 compilerOptions 下 types 字段中的 tsconfig.spec.json 并删除 jasmine 并添加 jest

"compilerOptions": {
"module": "commonjs",
"outDir": "./out-tsc/spec",
"types": ["jest", "node"]
}
Run Code Online (Sandbox Code Playgroud)