You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级到Angular 6+CLI后测试无法运行的问题排查

解决Angular 6升级后测试报错env.catchExceptions is not a function的问题

你遇到的这个问题核心是测试依赖版本不兼容,具体是旧版karma-jasmine和当前使用的jasmine-core 2.99.x不匹配导致的——Angular 6的测试环境需要更新后的测试依赖来支持新的Jasmine API。

解决方案步骤:

1. 更新测试相关依赖

修改package.json中的测试依赖版本,升级到适配Angular 6的兼容版本:

"jasmine-core": "~2.99.1",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~2.0.0",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~1.4.2",
"karma-jasmine": "~2.0.1",
"karma-jasmine-html-reporter": "^0.2.2",

重点是把karma-jasmine从1.1.1升级到2.x版本,同时将karma升级到2.0.0,确保和Angular 6的CLI工具链适配。

2. 清理并重新安装依赖

删除旧的依赖包和锁文件,避免缓存影响,重新安装更新后的依赖:

rm -rf node_modules package-lock.json
npm install

3. 检查Karma配置文件

确认karma.conf.js中已经引入Angular 6官方的构建插件,避免旧配置导致的加载异常:

module.exports = function(config) {
  config.set({
    // ... 其他配置项
    plugins: [
      require('karma-jasmine'),
      require('karma-chrome-launcher'),
      require('karma-jasmine-html-reporter'),
      require('karma-coverage-istanbul-reporter'),
      require('@angular-devkit/build-angular/plugins/karma') // 确保该行存在
    ],
    // ... 其他配置项
  });
};

4. 验证测试初始化代码

你的fake-test.ts和修改后的test.ts逻辑是正常的,如果测试仍有问题,可以尝试恢复默认的test.ts(去掉rxjs-compat导入,除非项目确实需要),确保测试环境初始化流程正确。

完成以上步骤后,重新运行ng test,应该就能正常执行测试用例了。

内容的提问来源于stack exchange,提问作者Ryan Langton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:32:34