新手如何 3 步跑通 TDD:Superpowers 测试驱动开发(RED-GREEN-REFACTOR)完整指南

新手如何 3 步跑通 TDD:Superpowers 测试驱动开发(RED-GREEN-REFACTOR)完整指南 新手如何 3 步跑通 TDDSuperpowers 测试驱动开发RED-GREEN-REFACTOR完整指南【免费下载链接】superpowersAn agentic skills framework software development methodology that works.项目地址: https://gitcode.com/GitHub_Trending/su/superpowers在 Superpowers 项目里测试驱动开发TDD先写测试、再写代码不是建议而是硬性要求。它的核心是一套叫 RED-GREEN-REFACTOR 的三步循环红灯 测试失败绿灯 测试通过重构 在不改变行为的前提下整理代码。如果你遇到过这种体验代码手动跑了一遍没问题一周后改动别处它又坏了而你已经想不起它当初该怎么表现——那缺的就是这套循环。下面用一个折扣计算的最小例子把整条循环完整走一遍新手可以直接照着做。为什么必须先看着测试失败后补的测试往往一跑就过而一个永远通过的测试什么也证明不了。先写测试逼你在实现之前回答我期望什么行为最清晰的 API 设计往往就在这个过程中冒出来。Superpowers 的 TDD 文档甚至定了铁律先写了代码删掉重来连留着当参考都不行。一个完整的最小走查折扣计算小函数假设要实现折扣函数applyDiscount规则是未满 50 元不打折满 50 元减 5 元。第 1 步RED写出一个失败的测试只写第一个行为先别想实现test(orders under 50 yuan get no discount, () { expect(applyDiscount(30)).toBe(30); });测试名就是需求本身传 30期望拿回 30一个测试只盯一个行为。跑一下npm test path/to/discount.test.ts它必须失败因为applyDiscount还不存在。注意失败原因得是功能没实现而不是拼写错误要是第一次跑就通过了说明你测的是已有行为测试要重写。第 2 步GREEN用最少代码通过只写刚好让这一条测试通过的代码别碰折扣规则function applyDiscount(subtotal: number): number { return subtotal; }一行就够。忍住顺手把减 5 元也写上的冲动那是过度设计留给下一条测试。再跑一次确认变绿也确认别的测试没被带崩。第 3 步REFACTOR补第二条测试并清理补上第二个行为它又会变红test(orders of 50 yuan or more get 5 off, () { expect(applyDiscount(80)).toBe(75); });实现门槛判断让它转绿然后进入重构const MIN_ORDER 50; const DISCOUNT 5; function applyDiscount(subtotal: number): number { return subtotal MIN_ORDER ? subtotal - DISCOUNT : subtotal; }把魔法数字提成常量、收成一行表达式。前提只有一个每次改动后都跑测试全程保持绿灯。一轮循环结束。如果还有新行为比如折扣上限回到第 1 步一次一个测试。这就是 信号灯的节奏一次放行一次。写测试前过一遍的三条标准Superpowers 对测试质量的要求很明确细则见 writing-good-tests.md一个测试只测一个行为测试名里出现和就该拆开名字即需求test(test1)这种名字不合格名字要直接说出守护哪个行为断言真实行为别断言 mockmock 一个依赖前先弄清它有哪些副作用来者不拒的替身证明不了任何东西还有一条期望值要亲手算出来。如果期望值也是用被测函数算的那测试就成了同义反复。四个常见误区怎么绕状况处理办法不知道怎么写测试先写出希望存在的 API从断言开始写测试写起来很复杂多半是设计太复杂先简化接口什么都得 mock说明代码耦合太紧试试依赖注入这功能太简单不用测简单的代码也会坏测试只要 30 秒还有一个在 Superpowers 文档里反复出现的写完代码再补测试属于自我合理化。先删掉写坏的代码从失败测试重新开始规则就是删掉就是删掉。Superpowers 的测试工具与文档入口TDD 技能文档完整规则、合理化借口对照表skills/test-driven-development/SKILL.md如何写好测试含反模式清单skills/test-driven-development/writing-good-tests.md项目测试指南介绍插件测试与智能体行为评测两类测试docs/testing.md测试辅助函数与运行脚本tests/claude-code/test-helpers.sh、tests/claude-code/run-skill-tests.sh想动手试克隆仓库git clone https://gitcode.com/GitHub_Trending/su/superpowers提交前自查清单每个新函数都有对应测试每条测试都被亲眼看过失败且失败原因是功能没实现代码是让测试通过的最少代码没有顺手加功能所有测试通过输出干净无错误和警告用真实代码mock 只用于无法避免的场景边界情况0、空、上限都有覆盖勾不全就说明跳过了循环。按项目规矩删掉代码从失败测试重来下一个功能再把这盏红绿灯完整跑一遍。✅【免费下载链接】superpowersAn agentic skills framework software development methodology that works.项目地址: https://gitcode.com/GitHub_Trending/su/superpowers创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考