← ClaudeAtlas

test-keeperlisted

按 TS 测试规范补充与修复单元测试——根据 git diff 判定当前业务模块,无测试时启动 openspec-propose 编写测试方案,有测试时按规范审查质量(注水、漏洞、覆盖率、断言质量),问题多输出报告并建议方案、问题少直接优化。当用户要求补充/修复/审查单元测试、执行测试规范、清理注水测试、分析测试质量时使用。
fongzhizhi/claude-skill-lab · ★ 1 · Testing & QA · score 77
Install: claude install-skill fongzhizhi/claude-skill-lab
# test-keeper 补充与修复单元测试,核心原则:**测行为,不测实现;拒绝注水测试**。测试的价值是锁定一份不可违背的业务契约——一个从未失败过的测试,就像从未生效的合同。 ## 参考规范(开始前必须加载) 按顺序读取以下两份文档,作为本次工作的唯一依据: 1. `~/.claude/rules/ts-testing.md` —— 强制规则(精简版) 2. `~/.claude/docs/ts-testing-guide.md` —— 单元测试详细指南(测试策略模型、Mock 分层决策、Vitest 实战技巧、断言规则、质量门禁) 若第二份缺失,提示用户先运行 `lab deploy docs/ts-code-guide`,不跳过规范直接动手。 ## 确定审查范围 ### 模式一:默认(git diff 判定模块) ```bash git diff --name-only HEAD # 已暂存 + 未暂存的修改 git status --porcelain # 检出 untracked 新增文件 ``` 合并结果,过滤出 `.ts` / `.tsx` **源码**文件(排除 `.test.ts` / `.spec.ts` 测试文件本身、`node_modules/`、构建产物目录),然后归并业务模块: - **模块 = 文件相对项目源码根(`src/`、`lib/`、`app/` 等)的首层目录**;无源码根约定时取文件所在目录 - 所有变更文件归属**同一模块** → 确认该模块,继续 - 涉及**多个模块**或无法判定 → 列出候选模块,由用户指定一个 - 无 TS 源码变更 → 告知用户并结束 ### 模式二:手动指定 | 参数 | 处理方式 | | --- | --- | | 文件路径 | 只审查该文件及其对应测试 | | 目录路径 | 递归处理目录下所有 `.ts` / `.tsx`(排除 `node_modules/`、构建产物) | | 模块名 | 定位该模块源码目录,审查模块整体 | ### 定位测试文件 对目标模块,按优先级查找对应测试: - 同目录 `xxx.test.ts` / `xxx.spec.ts` - 模块内 `__tests__/` 目录 - 模块 / 项目 `tests/`、`test/` 目录 - vitest / jest 配置(`vitest.config.*` / `jest.config.*`)的 `include` 模式 ## 分支一:无单元测试 → 启动 openspec-propose 目标模块无任何测试文件时,**自动启动 openspec-propose 编写测试方案**(无需二次确认): 1. 构造 change 描述: - change name:`add-tests-<模块名>`(kebab-case,如 `add-tests-order-service`) - 目标:为模块 X 补充单元测试,**参考 `~/.claude/docs/ts-testing-guide.md` 规范**——测行为不测实现、表驱动测工具、集成测流程、禁快照、锁定时间/随机数、覆盖率行 ≥80% 且重点关注 branches - 附上源码文件清单与本模块代码类型分布(纯函数 / Store / 副作用 / UI 组件),供方案按"代码分类与测试策略"(指南第四章)选型 2. 调用 Skill 工具触发 `openspec-propo