Angular14执行ng test(Jest)报no前缀选项警告如何修复
问题触发场景
将项目Angular框架升级至14版本,使用Jest作为测试框架,执行ng test命令运行测试时,控制台抛出如下警告:
Warning: 'no-cache' option has been declared with a 'no' prefix in the schema.Please file an issue with the author of this package. Warning: 'noStackTrace' option has been declared with a 'no' prefix in the schema.Please file an issue with the author of this package.
警告产生原因
Angular 14 新增了CLI配置Schema的命名校验规则,明确不允许配置项直接以no作为前缀命名,不符合该命名规范的配置项就会抛出上述提示。
触发警告的no-cache、noStackTrace是Jest原生支持的配置参数,旧版本的@angular-builders/jest(Angular对接Jest的构建器)直接透传了这两个参数,没有适配Angular 14的新命名校验规则,就触发了提示。该警告属于规范类提示,不会影响测试用例正常执行,也不会导致测试流程异常退出。
修复方案
可根据自身项目情况选择以下任意一种方案处理:
- 升级适配版本的Jest构建器(推荐)
该适配问题在@angular-builders/jest14.0.1及以上版本已经官方修复,直接升级开发依赖即可:
升级完成后重新执行# 使用npm的项目执行 npm install @angular-builders/jest@^14.0.1 --save-dev # 使用yarn的项目执行 yarn add @angular-builders/jest@^14.0.1 -Dng test命令,警告即可消失。 - 手动修改配置绕开校验(不方便升级依赖时使用)
如果项目暂时不允许升级构建器版本,可以直接修改angular.json中的测试配置,将带no前缀的反向配置替换为语义一致的正向取反配置,绕开命名校验规则:- 原配置
"no-cache": true替换为"cache": false - 原配置
"noStackTrace": true替换为"stackTrace": false
配置参考示例:
保存配置后重新运行测试命令即可消除警告,两种写法的实际运行效果完全一致。"test": { "builder": "@angular-builders/jest:run", "options": { "cache": false, "stackTrace": false // 其余原有测试配置保持不变即可 } } - 原配置
- 忽略提示不做处理
由于该警告仅为命名规范提醒,不会对测试运行逻辑、测试结果产生任何实质影响,如果不介意控制台多两行提示,完全可以不做处理,后续升级项目依赖时该问题会自然修复。
内容的提问来源于stack exchange,提问作者Mir aj
相关产品推荐
相关产品推荐

