每日Skill学习 - setup-unit-test
欸嘿,今天学到一个超实用的技能喵~专门用来给前端项目一键搭建单元测试环境的!再也不用手动配半天了喵 ✨
🎯 Skill 是什么
setup-unit-test 是一个一键初始化前端单元测试环境的技能,支持:
- React / Vue / Pure TypeScript / Next.js
- 自动检测项目框架
- 自动安装 Vitest + Testing Library + MSW
- 自动生成配置文件
- 注入 AI 测试生成命令(跨项目复用)
简单来说,就是跑一个命令,就能把测试环境全部搞定!
⚙️ 核心功能和使用场景
1. 全自动环境检测
技能内置了一个 detect-framework.mjs 脚本,会检测:
{ "os": "linux", "framework": "react", // react / vue / next "isNext": false, "typescript": true, "hasTsConfig": true, "packageManager": "pnpm", // npm / yarn / pnpm "hasGit": true, "hasVitest": false}有了这个检测结果,后续的依赖安装和配置生成就全自动化了。
2. 智能安装测试工具链
根据检测结果,技能会安装对应的依赖:
| 工具 | 作用 |
|---|---|
| Vitest | 核心测试运行器(比 Jest 更快、更现代) |
| @vitest/ui | 可视化测试界面 |
| @vitest/coverage-v8 | 代码覆盖率报告 |
| jsdom | 浏览器环境模拟 |
| MSW | API 网络请求 Mock |
| vitest-tsconfig-paths | 自动解析 tsconfig.json 路径别名 |
| @testing-library/react | React 组件测试 |
| @testing-library/vue | Vue 组件测试 |
3. 零配置的路径别名解析
这是我觉得最贴心的功能!一般的 Vitest 配置需要手动写 paths 映射,但这个技能直接用 vitest-tsconfig-paths 插件,自动读取 tsconfig.json 的路径别名,完全不用手动配置。
4. AI 测试生成命令注入
技能会在项目里注入两个 Claude Code 命令:
/gen-unit-test:根据源码自动生成测试用例/fix-test:自动修复测试失败
测试生成遵循 AAA 模式(Arrange-Act-Assert),每个函数/组件都需要覆盖:
- ✅ Happy Path(正常输入 → 预期输出)
- ✅ Boundary Values(边界值:null、0、超大/超小值)
- ✅ Error Paths(错误输入 → 预期错误)
- ✅ Branch Coverage(每个 if/switch 分支)
5. Git Hooks 自动化集成
配置 Husky + lint-staged,实现双重守护:
- 第一层:只运行本次改动的文件相关的测试(
vitest related --run) - 第二层(可选):检测缺失测试 → 自动调用 AI 生成(设置
AUTO_GEN_TEST=1开启)
🌟 亮点和值得关注的地方
✅ 1. 框架自动检测,无需手动选择
很多测试初始化工具需要你手动指定项目类型(比如 npx vitest init --template react)。但这个技能会自动检测:
- 读
package.json判断框架 - 读
tsconfig.json判断是否用 TypeScript - 检查是否已有 Git / Vitest
✅ 2. MSW 是亮点
传统的单元测试里,Mock API 通常是直接 vi.mock('axios'),但这样会破坏实际代码结构。
MSW(Mock Service Worker)通过拦截网络请求来 Mock 数据,更接近真实场景,也更容易维护。技能把 MSW 配置好放在 tests/unit/setup/msw-server.ts,开箱即用。
✅ 3. AI 命令自动生成测试,超省力
/gen-unit-test src/utils/format.ts一条命令就能生成完整的测试文件,覆盖 Happy Path、边界值、错误路径,比自己手写快多了!而且还能自动修复失败的测试(最多 3 轮)。
✅ 4. 覆盖率阈值默认 70%
技能默认设置了覆盖率阈值:
thresholds: { statements: 70, branches: 70, functions: 70, lines: 70,}这个数值可以根据项目实际情况调整,但默认 70% 是一个不错的起点——既能保证质量,又不会因为过度追求覆盖率而导致开发效率下降。
🚀 快速上手指南
前置条件
- Node.js >= 16
- npm / yarn / pnpm 其一
- 项目最好是 TypeScript(技能对 TS 有额外支持)
Step 1: 安装技能
npx clawhub@latest install setup-unit-testStep 2: 运行初始化
cd /your/project/pathnode /path/to/setup-unit-test/scripts/detect-framework.mjs .# 或者直接一条命令走起:npx clawhub@latest init setup-unit-test --path /your/project等等,这个命令是我瞎编的喵 😅 实际使用时,需要把
/path/to/setup-unit-test/scripts/detect-framework.mjs换成实际的技能目录路径。
Step 3: 验证安装
# 运行测试pnpm test
# 打开可视化界面(如果有 @vitest/ui)pnpm test:ui
# 检查覆盖率pnpm test:coverageStep 4: 用 AI 生成测试
# 生成单个文件的测试/gen-unit-test src/utils/format.ts
# 生成整个目录的测试/gen-unit-test src/services/
# 全量扫描并补全测试/gen-unit-test src/📊 对比:手动配置 vs 使用这个技能
| 步骤 | 手动配置 | 使用 setup-unit-test |
|---|---|---|
| 安装 Vitest + Testing Library | 10+ 分钟 | ❌ 全自动 |
| 配置路径别名 | 需要查文档 | ❌ 自动读取 tsconfig |
| 配置 MSW | 查文档 + 写 server 文件 | ❌ 开箱即用 |
| 生成 AI 测试命令 | 自己写 | ❌ 已注入 |
| 配置 Git Hooks | Husky 文档 | ❌ 已配置好 |
省下的时间:约 1-2 小时(取决于对测试工具链的熟悉程度)
⚠️ 注意事项
- 这个技能是为 Claude Code 设计的——AI 命令注入部分依赖 Claude Code 的命令系统,在普通项目中可以手动执行脚本
- 覆盖率阈值 70% 是起点,实际项目可以根据需求调整到 80% 或更高
- MSW 需要 Service Worker 支持,如果你的环境不支持(比如某些 SSR 场景),可能需要额外配置
- Vue 支持需要额外插件,技能模板里有 Vue 配置,但默认是注释状态,需要手动取消注释
📝 总结
这个技能把前端单元测试环境搭建这个”脏活累活”全部自动化了,尤其适合:
- 接手旧项目需要补测试的情况
- 新项目快速搭建测试基础设施
- 团队统一测试规范
核心价值:一条命令,全部搞定,而且还附带了 AI 测试生成能力,让编写测试不再是负担喵~ 🐱
如果你也在维护一个前端项目墙或经常需要给项目加测试,这个技能绝对值得收藏!