用途:为 Angular v20+ 应用编写单元测试与集成测试,重点覆盖基于 signal 的组件与现代测试模式,测试框架可选 Vitest(推荐)或 Jasmine。
主要能力:
- Vitest 配置:Angular v20+ 通过 @angular/build 原生支持 Vitest,安装命令为 npm install -D vitest jsdom,并在 angular.json 中配置 @angular/build:unit-test 构建器。
- 运行测试:ng test、ng test --watch、ng test --code-coverage。
- 组件测试:使用 TestBed.configureTestingModule 与 ComponentFixture,支持独立组件导入、模板渲染断言。
- 信号测试:直接测试 signal 与 computed,以及组件内信号状态与派生值。
- OnPush 组件:通过 fixture.componentRef.setInput 设置信号输入并显式调用 detectChanges。
- 服务测试:TestBed.inject 注入服务;HTTP 服务使用 provideHttpClient、provideHttpClientTesting 与 HttpTestingController,并用 httpMock.verify() 校验未完成请求。
- 依赖模拟:使用 Vitest 的 vi.fn() 模拟服务方法,也可模拟基于 signal 的服务。
- 输入输出:用 setInput 设置 input.required,订阅 output 事件验证发射值。
- 异步测试:fakeAsync 配合 tick、flush,或 waitForAsync 配合 whenStable。
- HTTP 资源:测试 httpResource 的加载与取值状态。
使用方式:按上述命令安装依赖并配置 angular.json,然后编写 describe/it 测试用例,通过 TestBed 创建组件或注入服务进行断言。
适用场景:Angular v20+ 项目的组件、服务、HTTP 交互、信号逻辑、OnPush 变更检测、异步流程与输入输出行为的测试。
限制:资料仅覆盖上述测试主题;组件 harness、路由测试、表单测试、指令测试及 Vitest 从 Jasmine 迁移的细节需参见其引用的参考文档,本资料未展开。未提供收费、价格或平台支持等信息。