关于 tdd-red-green-refactor
面向 TypeScript 的技能,指导在 AI 辅助编程中使用红绿重构 TDD 流程,强调渐进测试、最小实现和验证规则。
主要功能
- 01红绿重构测试循环
- 02一次编写一个测试
- 03最小实现指引
- 04TypeScript 类型与断言
- 05保持测试完整性的规则
适用场景
- 01以测试优先开发小功能
- 02确认失败源于缺失行为
- 03在测试通过时重构
- 04防止修改削弱现有测试
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ google-labs-code/ stitch-sdk --skill tdd-red-green-refactor安装后在 Claude Code 中输入/tdd-red-green-refactor确认已加载。
详细介绍
Red-Green-Refactor(TDD)技能:TypeScript 版
此技能为 AI 辅助编程构建了一套结构化框架,确保每一行代码都可验证、类型明确且目的清晰。
三阶段循环
阶段 1:Red(确认失败)
你必须证明该功能尚不存在,并且测试有效。
- 编写一个测试:针对下一项小型行为编写一个测试用例(例如使用 Vitest 或 Jest)。
- 运行并确认失败:运行测试。测试必须失败。
- 验证:确保失败是由缺失逻辑导致的(例如,
ReferenceError: add is not defined),而不是配置错误。
阶段 2:Green(最小化通过)
尽可能快速、简单地让测试通过。
- 最小化实现:编写满足测试要求的最简单代码。不要为未来构建;只专注于当前的“Red”测试。
- 运行测试:运行测试套件。所有测试都必须变为 Green。
- 提供证据:从 Red 到 Green 的转变就是开发者的“工作成果证明”。
阶段 3:重构(清理)
在保持 Green 状态的同时改进代码结构。
- 清理:改进命名、消除重复,并优化阶段 2 编写的代码。
- 安全网:每次修改后都重新运行测试。如果测试变为 Red,立即撤销修改。
核心操作规则
1. 禁止“横向铺陈”
严禁一次性编写大量测试。必须严格遵循增量循环:
- 编写 1 个测试 -> 看它失败 -> 编写 1 个修复 -> 看它通过。
- 针对每个子功能重复此循环。
2. 施加反馈约束
利用自动化断言和强类型(TypeScript)作为反馈约束,防止 AI“猜测”解决方案,或在低质量代码中“打滚”。
3. 验证完整性
绝不要修改现有测试来让失败的实现通过。如果必须修改测试,原因必须是需求发生了变化,而不是代码难以编写。
示例工作流(TypeScript + Vitest)
步骤 1:Red
// math.test.ts
import { describe, it, expect } from "vitest";
import { add } from "./math";
describe("add", () => {
it("should sum two numbers", () => {
expect(add(2, 2)).toBe(4); // Fails: ReferenceError: add is not defined
});
});
步骤 2:Green
// math.ts
export const add = (a: any, b: any) => {
return 4; // Passes: Minimal code to satisfy the test
};
步骤 3:重构
// math.ts
/**
* Sums two numbers with explicit type safety.
*/
export const add = (a: number, b: number): number => {
return a + b; // Passes: Proper implementation with safety net
};
评论
支持 Markdown