Angular 17项目中库测试未执行问题求助
Angular库测试无法执行的问题排查与解决
问题原因
- Angular CLI默认测试目标是根应用,直接执行
ng test只会扫描根目录的src文件夹,即便添加--include参数,也可能因为测试配置的范围限制,导致projects下的库测试文件被忽略。 - 当前
angular.json中仅配置了根应用的测试规则,未针对库指定独立的测试目标,导致命令无法识别库的测试文件路径。
解决办法
1. 直接指定库名称执行测试
这是最直接的方式,针对目标库运行测试命令:
- 执行单个测试文件:
ng test my-lib --include projects/my-lib/myfile.spec.ts
- 运行库的所有测试:
ng test my-lib
2. 确认并完善库的测试配置
检查angular.json中projects/my-lib/architect下是否存在test配置(创建库时默认会生成),确保配置指向库自身的测试文件和配置:
"projects": { "my-lib": { "architect": { "test": { "builder": "@angular-devkit/build-angular:karma", "options": { "polyfills": ["zone.js", "zone.js/testing"], "tsConfig": "projects/my-lib/tsconfig.spec.json", "preserveSymlinks": true } } } } }
同时确保库目录下的tsconfig.spec.json正确包含测试文件:
{ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "../../out-tsc/spec", "types": ["jasmine", "node"] }, "include": ["src/**/*.spec.ts", "src/**/*.d.ts"] }
3. 调整根配置的测试范围(不推荐)
如果需要通过根命令统一执行所有测试,修改根目录的tsconfig.spec.json,将projects目录纳入扫描范围:
{ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./out-tsc/spec", "types": ["jasmine", "node"] }, "include": [ "src/**/*.spec.ts", "src/**/*.d.ts", "projects/**/*.spec.ts", "projects/**/*.d.ts" ] }
之后即可用根命令执行库的测试:
ng test --include projects/my-lib/myfile.spec.ts
内容的提问来源于stack exchange,提问作者decebal
相关产品推荐
相关产品推荐

