升级到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
相关产品推荐
相关产品推荐

