玩笑错误:无法设置基本提供程序。使用“ng test”升级 Angular v13 后

Gek*_*eka 8 jestjs angular-cli jest-preset-angular ts-jest

将 Angular 升级到 v 13 后,当我尝试在 jest 环境中运行测试时,出现错误:

Cannot set base providers because it has already been called
import 'jest-preset-angular/setup-jest';
Run Code Online (Sandbox Code Playgroud)

此外,我按照这篇文章中指出的那样配置了 Jest: https: //thymikee.github.io/jest-preset-angular/docs/next/guides/esm-support/但它对我没有帮助。需要帮忙。我该如何修复我的测试?

RGe*_*RGe 11

我的解决方案是删除该setup-jest.ts文件,因为import 'jest-preset-angular/setup-jest';它已经由@angular-builders/jest.

  • 当我从 setup-jest.ts 中删除该导入时,ng 测试可以工作,但由于 Angular 13 / Jest 28.1.1 上的各种问题,从命令行(或 VS Code Jest 测试资源管理器扩展)运行 jest 失败。看到“在此配置中,Angular 需要 Zone.js”“fakeAsync() 测试助手需要 zone-testing.js,但无法找到。” (7认同)

小智 1

我也遇到过同样的问题。Angular 13 的 ESM 支持似乎尚未发布。https://thymikee.github.io/jest-preset-angular/docs/next/guides/angular-13+

但是,已经合并了一个 PR(https://github.com/thymikee/jest-preset-angular/pull/1122),大概应该可以解决这个问题。