Angular v14升级后ng test无法传递Jest CLI选项报错如何解决
Angular 14 下 ng test 无法识别 Jest 透传参数问题
问题表现
Angular项目中使用Jest替代Karma作为测试框架,angular.json配置正确,直接执行ng test可以正常运行。
根据相关技术文档说明:
既可以在builder选项中指定Jest CLI选项(适合持久化配置场景),也可以直接在
ng test命令后追加参数传递(适合单次临时使用场景)。
比如运行单个测试用例可以执行:ng test --testNamePattern="My test suite My test case"
升级到Angular v14之前该用法一直正常,升级后执行命令:
ng test --testNamePattern="MyComponent"
直接抛出错误:
Error: Unknown argument: testNamePattern
环境信息
Angular CLI: 14.0.2 Node: 16.13.1 Package Manager: yarn 1.22.17 OS: darwin arm64 Angular: 14.0.2 ... animations, cdk, cli, common, compiler, compiler-cli, core ... elements, forms, language-service, platform-browser ... platform-browser-dynamic, router Package Version --------------------------------------------------------- @angular-devkit/architect 0.1400.2 @angular-devkit/build-angular 14.0.2 @angular-devkit/core 14.0.2 @angular-devkit/schematics 8.3.29 @schematics/angular 14.0.2 rxjs 6.6.7 typescript 4.7.4
问题原因
该问题是适配Angular 14版本的Jest builder存在的回归缺陷,命令行参数透传逻辑失效,无法识别直接追加的Jest原生参数。
解决方法
- 单次运行需要过滤测试用例时,直接调用本地Jest执行,绕过Angular CLI的builder参数校验:
npx jest --testNamePattern="MyComponent" - 固定配置的Jest运行参数,统一写到项目根目录的
jest.config.js中,或者配置在angular.json对应builder的options字段下,不要通过命令行追加透传。 - 等待Jest builder发布修复该回归问题的版本后,升级依赖即可恢复原
ng test追加参数的用法。
备注:该问题已被builder维护方确认是版本回归缺陷
内容的提问来源于stack exchange,提问作者Flavien Volken
相关产品推荐
相关产品推荐

