用途:该技能用于在编写任何实现代码之前先写测试,适用于新功能、缺陷修复、重构和行为变更。核心原则是:如果没有亲眼看到测试失败,就不知道它是否在测试正确的东西。
主要能力:给出红-绿-重构循环。RED 阶段写一个最小测试,展示期望行为,要求单一行为、名称清晰、尽量使用真实代码而非 mock;随后必须运行测试并确认它因功能缺失而失败。GREEN 阶段写最简代码让测试通过,不额外加功能或重构。REFACTOR 阶段在保持测试通过的前提下消除重复、改进命名、抽取辅助函数。
必要用法:铁律是“没有失败的测试就不写生产代码”。若先写了代码,应删除并从头开始,不保留作参考、不边写测试边改编。验证命令示例:npm test path/to/test.test.ts。测试通过后需确认其他测试仍通过、输出无错误与警告。
适用场景:新功能、缺陷修复、重构、行为变更。例外情况(需询问人类伙伴):一次性原型、生成代码、配置文件。
限制与提醒:资料强调测试后写无法证明测试有效,手动测试不系统、无记录、不可重跑;删除已写代码并非浪费,保留不可信代码才是技术债。遇到难以测试、需要大量 mock、测试设置庞大等情况,应简化设计或使用依赖注入。添加 mock 或测试工具时可参考 @testing-anti-patterns.md。最终规则:生产代码必须有先失败过的测试,否则不算 TDD,无人类伙伴许可不得例外。