用途:这是一套与具体框架无关的测试编写纪律,用于在编写测试、补充测试覆盖或审查测试时约束质量。核心原则是:测试用于证明行为可用,无法失败的测试毫无价值,只测 mock 而不测真实代码的测试是表演。
主要能力:要求每个测试只验证一个行为,测试名描述预期行为而非被调用函数;从用户需求、已实现功能、响应中的声明三个独立来源推导用例,找出覆盖缺口;测试中优先 DAMP 而非 DRY,允许重复以保持可读性;建议测试金字塔约 80% 单元、15% 集成、5% E2E,并按风险调整;尽量使用真实对象,mock 仅用于外部 HTTP、支付、邮件等系统边界,框架自带的 fake 机制可用;覆盖空值、边界、非法类型、并发、错误路径与 Unicode;专门覆盖静默失败,如空 catch、被吞掉的 rejection、被转换的错误、缺失的异步处理与事务回滚。
使用方式:修复缺陷时先写能复现缺陷的失败测试,确认失败原因正确后再修复并观察通过;新功能可边实现边写测试。绿灯阶段只写满足测试的最简代码,通过后再重构。完成前按清单核对:每个新公开函数或端点至少一个测试、名称描述行为、尽量用真实对象、覆盖边界、断言结果而非实现细节、测试相互独立、单元套件足够快、缺陷修复测试能复现原缺陷。
适用场景与限制:适用于 API、Web、CLI 等项目的测试编写与评审。文中还列出多种反模式,如测试 mock 行为、生产代码中的测试专用方法、仅用快照、测试框架本身、不完整 mock、无理解地 mock,以及 AI 生成测试的六种常见问题:mock 被测系统、循环断言、未审查快照、无断言、过宽匹配器、实现回显断言。框架专属模式需参考对应技能,如 Laravel/PHP 与 React/TypeScript 的专门指引,两者同时启用时以框架专属指引为准。具体工具与命令资料未提供。