在使用Vitest测试Angular库(v21)时,出现错误:“在此配置下,Angular需要Zone.js。”
我在用Vitest测试我的Angular库组件(v21)时,收到错误信息 Error: In this configuration Angular requires Zone.js。与我的应用不同,应用有一个 polyfills 的部分,我不确定如何将zone.js纳入编译。
我的 angular.json 当前看起来是这样的:
// ...
"test": {
"builder": "@angular/build:unit-test",
"options": {
"providersFile": "libs/shared/test-util/global-providers.ts",
"browsers": ["edge"]
}
// ...
解决方案
根据文档(https://angular.dev/guide/testing/migrating-to-vitest),“@angular/build:karma 构建器以前允许在 test 目标内直接配置构建选项(例如 polyfills、assets 或 styles)。新的 @angular/build:unit-test 构建器不再支持此项[...]”
对于新的unit-test-builder,然而,有一个 setupFiles-section:
"test": {
"builder": "@angular/build:unit-test",
"options": {
"providersFile": "libs/shared/test-util/global-providers.ts",
"browsers": ["edge"],
"setupFiles": ["libs/shared/test-util/setup.ts"]
}
在这个文件中,我导入了zone.js:
import 'zone.js';
最后,确保在编译中包含了设置文件(tsconfig.spec.json):
"include": [
//...
"test-util/global-providers.ts",
"test-util/setup.ts"
]
就这样,错误消失了!
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。