Vitest 单元测试搭建
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @kunlungrowth/vitest。
技能介绍
解决什么问题
多数团队在引入单元测试时卡在第一步:不是不想写测试,而是测试环境本身搭不起来。不同项目的技术栈差异很大——Cloudflare Workers 需要专用的 pool 来跑绑定变量,React 组件测试依赖 jsdom 与 Testing Library,Node/Hono API 又是另一套环境。手动拼配置往往要花半天时间,还要处理 describe is not defined、document is not defined 这类环境报错,最后还可能在 CI 和本地跑出不同结果。
核心能力
这个技能扮演测试基础设施工程师的角色,按检测到的项目类型产出可运行的测试设施:
- 类型检测:读取
package.json、tsconfig.json、wrangler.toml等文件,将项目归类为 Cloudflare Workers、React(Vite)、React(SSR/TanStack Start)、Node/Hono API 或库 - 配置生成:生成匹配的
vitest.config.ts;若项目已有 Vite 配置则直接扩展,不重复建文件 - 示例测试:针对项目中真实存在的源码写一份测试,放到源码旁边而非独立的
__tests__目录,装完即可运行 - 脚本接入:合并(而非覆盖)
test、test:run、test:coverage、test:ui脚本 - 首次验证:运行测试确认通过,失败时自动诊断修复,确保设置完成时测试就能绿
关键步骤
- 检测项目类型与包管理器,生成对应的依赖清单
- 按类型生成配置:Workers 用
defineWorkersConfig指向wrangler.toml,React 用jsdom加 setup 文件,API 与库用node环境 - 生成
src/test/setup.ts,React 项目导入@testing-library/jest-dom/vitest注册匹配器 - 在覆盖测试文件的
tsconfig.json中添加"types": ["vitest/globals"] - 基于真实源码生成示例测试:Hono 路由用
app.request()断言,React 组件用render+userEvent,工具函数直接断言返回值
适用边界
它解决的是"怎么把测试跑起来",而不是"该测什么"。测试策略仍需人工判断,示例测试针对具体项目源码生成,不提供通用的假模块。多 tsconfig 项目要注意把配置加到正确那份。
使用场景
- 接手一个 React + Vite 项目,没有测试,需要生成 jsdom 环境的 Vitest 配置和首个组件测试
- Hono API 服务要写路由测试,需要用 app.request() 断言状态码和响应体的测试基础设施
- 团队正从 Jest 迁移到 Vitest,需要生成新配置并清理 jest/ts-jest 等旧依赖
- Cloudflare Workers 项目需要配 @cloudflare/vitest-pool-workers 才能跑绑定的测试环境
适合人员
- 刚接手无测试存量项目的前端开发者,需要快速搭起能跑通的 Vitest 环境
- 维护 Node/Hono 接口服务的开发,想让每个路由都有状态码断言测试
- 负责把 Jest 项目迁到 Vitest 的技术负责人,需要配置和依赖清单
- 发布 npm 库的独立开发者,想补上库导出的单元测试再接入覆盖率