Angular使用Jest跑单元测试提示zone-testing.js缺失如何解决
问题解决说明
报错的核心原因是Jest测试运行环境未正确加载Angular单元测试依赖的zone.js测试工具包,@briebug/jest-schematic工具未自动补全这部分配置。
分步操作步骤
- 配置测试入口导入zone.js测试包
找到项目src目录下的test.ts测试入口文件,在文件最顶部添加以下导入代码:
import 'zone.js'; import 'zone.js/testing';
Angular 13及更早版本请使用import 'zone.js/dist/zone-testing'替代上述第二行导入语句
- 校验Jest配置的入口关联
打开项目根目录下的jest.config.js配置文件,确认已经将test.ts配置为预加载文件:
module.exports = { // 其余原有配置保持不变 setupFilesAfterEnv: ['<rootDir>/src/test.ts'] }
若项目没有单独的jest.config.js,检查angular.json中对应项目的test配置下,builder为@briebug/jest-schematic:jest的配置项中,已包含setupFilesAfterEnv的对应配置。
- 校验依赖版本匹配
检查package.json中zone.js的版本与@angular/core的大版本号完全一致,版本不匹配时执行对应版本的安装命令,以Angular 16为例:
npm install zone.js@16 --save-dev
- 清理缓存重新运行测试
配置修改完成后,先清理Jest缓存避免旧缓存影响:
npx jest --clearCache
之后执行npm test即可正常运行测试。
内容的提问来源于stack exchange,提问作者Alexander Castillo
相关产品推荐
相关产品推荐

