用途:为 AngularJS(1.x)应用编写、重构与维护单元测试,也可用于现有测试套件维护和向 Angular 迁移的准备工作。注意 AngularJS 已于 2021 年 12 月停止维护,仅接收关键安全修复,新项目应使用 Angular 19+。
主要能力:测试控制器逻辑、状态管理与事件处理;测试 factory/service 依赖、HTTP 调用与业务逻辑;验证过滤器转换与边界条件;测试指令编译、链接与 DOM 操作;用 $httpBackend(Jasmine/Karma)或 MSW/fetch 模拟(Jest)模拟 HTTP;处理 $q、deferred 对象与 $timeout;使用模拟或真实依赖进行依赖注入测试;测试 scope 生命周期、watcher 与事件广播;生成与解读覆盖率报告;按最佳实践组织测试。支持 AAA 模式、mock 与 spy、测试夹具、边界用例、Jest 快照、确定性异步与 js-env-sanitizer 环境隔离模式。
框架选择:维护既有套件时用 Jasmine + Karma;新工作与混合仓库推荐 Jest。Jasmine 安装:npm install --save-dev jasmine karma karma-jasmine karma-chrome-launcher;Jest 安装:npm install --save-dev jest jest-preset-angular angular-mocks 与 npm install @angular/core,使用 jest.config.js 配置 preset: 'jest-preset-angular'、testEnvironment: 'jsdom'、setupFilesAfterEnv 与 collectCoverage。Jest 迁移中 spyOn 改为 jest.spyOn、jasmine.createSpy() 改为 jest.fn()、尽量用 fetch mock 或 MSW 替换 $httpBackend,并用 jest.clearAllMocks()/jest.resetAllMocks() 清理状态。
适用场景:维护 AngularJS 遗留代码库并补齐单元测试;改善倒置的测试金字塔,先向单元测试倾斜;为迁移 Angular 做好准备。
限制:AngularJS 与 Karma 均已停止积极维护,Karma 自 2021 年起无重大版本;仅依据资料提供模式与配置,未提供具体收费、平台或效果数据。