SuperAPI AI 工具集

test-behavior-not-implementation

测试与质量

查看项目

更新于 10-15 20:05

技能介绍

用途:为 React 与 TypeScript 项目提供测试编写与审查的指导原则,核心是“测试行为,而非实现”,目标是写出更少但更好的测试。

主要能力:按 Testing Trophy 给出优先级——集成测试(性价比最高)、单元测试、端到端测试、静态分析(TypeScript、ESLint,成本最低)。核心原则包括:断言用户可见或可体验的内容(渲染输出、触发事件、公共 API 返回值),不断言内部状态、私有函数调用、组件实例方法、消费者不使用的 hook 内部返回值,以及非契约性的调用次数;写更少更长的测试,一个测试覆盖完整用户流程;使用可访问性查询,优先级为 getByRole > getByLabelText > getByPlaceholderText > getByText > getByDisplayValue > getByAltText > getByTitle > getByTestId,仅在无可用可访问查询时使用 getByTestId;不测试第三方库已覆盖的行为;避免不必要的 mock,只在系统边界(网络请求、定时器、测试环境缺失的浏览器 API 如 IntersectionObserver、ResizeObserver、canvas)mock,禁止用 vi.mock() 或 jest.mock() mock 内部模块;一个行为只写一个测试。

使用方式:作为测试编写与审查的检查清单使用。提供决策树判断某测试是否值得保留:先问是否测试用户/消费者能注意到的行为,是则检查是否与其他测试重复,重复则合并或删除较弱者;否则判断是否为内部实现细节,是则删除或改写为可观察行为,不确定则问“不改变行为的重构是否会让该测试失败”,会则删除。还提供反模式清单(重复用例、重测上游行为、断言内部状态、断言调用次数、spy 内部方法、mock 内部模块、过度设计 setup、缺少错误/边界用例、缺少可访问性断言)与不应测试的内容(纯类型文件、常量、re-export 索引文件、薄包装、无逻辑的样式包装、框架自身行为)。结构规则建议优先 userEvent 而非 fireEvent,测试名描述行为,测试文件与源码同目录(如 stamp-card.test.tsx 与 stamp-card.tsx 并列),除序列化输出外不用快照测试。

适用场景:React/TypeScript 项目的测试编写、代码审查与测试审计。

限制:资料未提供安装命令、运行方式、平台支持、收费与价格信息,暂未提供。