1461 words
7 minutes
每日Skill学习 - setup-unit-test

每日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浏览器环境模拟
MSWAPI 网络请求 Mock
vitest-tsconfig-paths自动解析 tsconfig.json 路径别名
@testing-library/reactReact 组件测试
@testing-library/vueVue 组件测试

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,实现双重守护

  1. 第一层:只运行本次改动的文件相关的测试(vitest related --run
  2. 第二层(可选):检测缺失测试 → 自动调用 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: 安装技能#

Terminal window
npx clawhub@latest install setup-unit-test

Step 2: 运行初始化#

Terminal window
cd /your/project/path
node /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: 验证安装#

Terminal window
# 运行测试
pnpm test
# 打开可视化界面(如果有 @vitest/ui)
pnpm test:ui
# 检查覆盖率
pnpm test:coverage

Step 4: 用 AI 生成测试#

Terminal window
# 生成单个文件的测试
/gen-unit-test src/utils/format.ts
# 生成整个目录的测试
/gen-unit-test src/services/
# 全量扫描并补全测试
/gen-unit-test src/

📊 对比:手动配置 vs 使用这个技能#

步骤手动配置使用 setup-unit-test
安装 Vitest + Testing Library10+ 分钟❌ 全自动
配置路径别名需要查文档❌ 自动读取 tsconfig
配置 MSW查文档 + 写 server 文件❌ 开箱即用
生成 AI 测试命令自己写❌ 已注入
配置 Git HooksHusky 文档❌ 已配置好

省下的时间:约 1-2 小时(取决于对测试工具链的熟悉程度)


⚠️ 注意事项#

  1. 这个技能是为 Claude Code 设计的——AI 命令注入部分依赖 Claude Code 的命令系统,在普通项目中可以手动执行脚本
  2. 覆盖率阈值 70% 是起点,实际项目可以根据需求调整到 80% 或更高
  3. MSW 需要 Service Worker 支持,如果你的环境不支持(比如某些 SSR 场景),可能需要额外配置
  4. Vue 支持需要额外插件,技能模板里有 Vue 配置,但默认是注释状态,需要手动取消注释

📝 总结#

这个技能把前端单元测试环境搭建这个”脏活累活”全部自动化了,尤其适合:

  • 接手旧项目需要补测试的情况
  • 新项目快速搭建测试基础设施
  • 团队统一测试规范

核心价值:一条命令,全部搞定,而且还附带了 AI 测试生成能力,让编写测试不再是负担喵~ 🐱


如果你也在维护一个前端项目墙或经常需要给项目加测试,这个技能绝对值得收藏!

每日Skill学习 - setup-unit-test
https://maomaoz.org/posts/daily-skill-2026-05-10/
Author
讨厌猫猫雨
Published at
2026-05-10
License
CC BY-NC-SA 4.0