SuperAPI AI 工具集

tdd

测试与质量

查看项目

更新于 10-15 08:17

技能介绍

TDD 是一个测试驱动开发(Test-Driven Development)技能,用于在实现功能、修复缺陷或添加有意的测试覆盖时,强制执行严格的测试先行循环。其核心流程为:红(Red)→ 绿(Green)→ 重构(Refactor)→ 提交(Commit)。

用途 该技能适用于需要以测试驱动方式推进的开发任务。调用时可传入可选参数描述要实现的内容,例如 /tdd add rate limiting to the search endpoint;若参数为空,则询问用户要实现什么。

主要能力与强制规则 技能明确列出多项禁止事项:绝不在测试之前编写实现;绝不跳过 mock 引导验证;绝不跳过完整测试套件运行;若测试在红阶段就通过则绝不继续;绝不把多个功能批量放入一个 TDD 循环;绝不把编译或导入错误当作“红”。

写测试之前的准备 若测试运行器配置中设置了 mockReset: true,多数网络上的 mock 示例会静默失败,因为返回值会在测试之间被清除。技能建议先用 grep 检查配置:grep -rn 'mockReset|mockClear|restoreMocks' vitest.config.* jest.config.*。若存在 mockReset: true,必须在 beforeEach 中重新配置返回值,而不是在模块作用域。技能要求先写一个引导测试来验证 mock 接线,并给出了使用 vitest 的示例代码(包含 vi.hoisted、vi.mock 与 beforeEach 中 mockResolvedValue 的写法)。运行并确认该引导测试通过后,删除它,再用相同模式编写真实测试。

红阶段 编写覆盖以下情况的测试:正常路径、边界情况(空输入/边界输入)、错误情况(无效输入、未授权、资源缺失)。运行命令为 npx vitest run <test-file> --reporter=verbose。检查点:所有新测试必须失败;若有任何测试通过,说明该行为已存在或测试写错了。

绿阶段 编写最少的代码使测试通过。不添加未测试的功能、不做过早优化、不写未测试的错误处理。运行命令同上。检查点:所有测试(新增与已有)都通过。

完整套件 运行 npx vitest run --reporter=verbose。若外部测试失败,需判断是否由本次改动引起:若是则先修复再继续;若为既有问题则记录并继续。

重构(可选) 仅在测试为绿时进行。可提取辅助函数、改进命名、简化条件分支,之后重新运行完整套件。

质量门禁 运行 npx eslint <changed-files> 与 npx tsc --noEmit,修复后再提交。

Mock 模式参考 技能提供三种模式:转发模式(可承受 mockReset,使用 vi.fn 与 vi.mock 转发参数,并在 beforeEach 中设置 mockResolvedValue);基于计数器的排序(用于多查询操作,通过 callCount 依次返回不同结果);globalThis 注册表(用于相互依赖的 mock 的 TDZ 变通方案,将 mock 挂载到 globalThis.__mocks 上)。

适用场景与限制 该技能面向使用 vitest 等测试框架的 JavaScript/TypeScript 项目,强调测试先行与 mock 正确性。其限制包括:必须严格遵循红-绿-重构循环,一次只处理一个行为变更;若测试在红阶段通过则必须修订测试;编译/导入错误不算有效的“红”。关于该技能支持的具体框架范围、安装方式、收费情况等,资料中暂未提供。