用途:这是一套测试驱动开发(TDD)方法论技能,用于功能实现、缺陷修复、重构或任何行为变更,核心是红-绿-重构循环。
核心原则:铁律是“没有先失败的测试,就不写改变行为的生产代码”。若先写了代码,需完全删除,从测试重新实现。重构步骤豁免,因为它只改结构不改行为,测试全程保持绿色。
循环步骤:RED 写一个最小测试,只测一个行为,命名清晰,断言可观察结果;随后必须运行 npm test path/to/test.test.ts 亲眼看到它以正确原因失败(断言失败或编译/类型错误),若立即通过说明测的是已有行为,需修正测试。GREEN 写最简代码让测试通过,不多写功能。再次运行确认通过且其他测试仍通过、输出干净。REFACTOR 在绿色后清理重复、改进命名、抽取辅助函数,不新增行为,保持测试绿色,然后进入下一个 RED。
测试质量:每个测试只做一件事,名称描述行为,展示期望的 API 用法而非实现细节。
缺陷修复:先写复现缺陷的失败测试,再走 TDD 循环,测试既证明修复又防止回归。
遗留代码:对无测试的继承代码,先写刻画测试(characterization tests)捕获当前行为,观察实际输出并更新断言作为“黄金标准”,建立安全网后再对新行为变更应用 TDD。
稳定性:单元测试必须确定性,禁止真实 sleep、墙钟时间、Math.random()、网络调用和文件系统竞态;用假定时器、注入时钟或 RNG、边界 mock 或 MSW、唯一临时目录。不稳定测试要修复或删除。
规划:进入循环前花两分钟列出接下来 3-10 个预期测试,避免局部最优设计。
限制与反模式:资料提到测试 mock 行为、给生产类加仅测试方法等反模式,详见 references/testing-anti-patterns.md;对常见质疑的详细反驳见 references/tdd-philosophy.md。具体安装方式、平台与收费信息暂未提供。