SuperAPI AI 工具集

angular-testing

测试与质量

查看项目

更新于 10-16 03:04

技能介绍

用途:为 Angular v21+ 应用编写单元测试与集成测试,采用 Jest 配合 @testing-library/angular,优先从用户视角验证行为,而非实现细节。

主要能力与原则:以用户为中心,模拟真实用户行为;遵循 Angular v20+ 标准(独立组件、Signals、@if/@for 控制流);使用语义化查询(getByRole、getByLabelText)促进可访问标记。

框架与语法:始终使用 Jest 全局对象 describe、it、expect、jest(如 jest.fn()、jest.spyOn()),不使用 jasmine、spyOn 或 done()。断言使用 @testing-library/jest-dom 匹配器,如 toHaveClass、toBeVisible、toHaveTextContent、toBeDisabled,避免直接操作 DOM。

测试结构:每个测试按 Arrange、Act、Assert 三段组织,段间留一个空行,不写 // Arrange 等注释;标题用主动语态、描述具体行为,避免 should 式命名。

组件测试策略:每个 it 块自包含,beforeEach 仅用于真正共享的设置;查询优先级为 getByRole、getByLabelText、getByText,getByTestId 仅作最后手段;交互使用 @testing-library/user-event 的 userEvent;只测试公共字段与方法,私有逻辑通过公共触发方式验证;不测试 Angular 内置指令,聚焦组件自身输入、输出与业务逻辑。

Mock 与异步:用 jest.spyOn() 或 jest.fn() 隔离依赖,在边界处 mock 服务与 API;所有查询或事件返回的 Promise 使用 async/await 处理;Signals 通过 component.mySignal.set() 更新并验证 UI 自动更新;HTTP 服务测试使用 HttpTestingController 与 provideHttpClientTesting()。

限制:资料未提供安装命令、配置步骤、版本兼容细节及完整示例,仅指向 references/testing-jest-patterns.md 查看完整用法与模式。