用途
该技能用于在 JavaScript/TypeScript 项目中生成 Vitest 测试代码。Vitest 具备 Vite 原生速度,提供与 Jest 兼容的 API,并支持 ESM 与 HMR。当任务涉及 Vitest 测试时,可依据本技能提供的模式编写用例。触发条件包括用户提到 "Vitest"、"vi.mock"、"vi.fn"、"Vite test"、"vitest config",或使用 "vi.mock"、"vitest.config" 等关键词。
主要能力
技能给出的核心模式包括:
- 基础测试:使用
describe、it、expect、vi、beforeEach组织用例,例如对 Calculator 的 add、divide 进行断言。 - 模拟(Mocking):以
vi替代jest,包括vi.mock模拟模块、vi.fn()模拟函数、vi.spyOn监视并恢复、vi.useFakeTimers()控制时间。 - 源码内测试(In-Source Testing):通过
import.meta.vitest在源码文件内直接编写测试。 - 快照测试:支持
toMatchSnapshot与toMatchInlineSnapshot。 - React 组件测试:结合
@testing-library/react的render、screen进行断言。
使用方式
技能列出的命令包括:npx vitest run(运行一次)、npx vitest(默认 watch)、npx vitest --ui、npx vitest --coverage、npx vitest run src/math.test.ts(指定文件)、npx vitest run -t "adds"(按名称过滤)。配置示例为 vitest.config.ts 中使用 defineConfig,可设置 globals、environment、coverage、include、includeSource 等选项。
技能还指出应避免的反模式,例如用 jest.fn() 替代 vi.fn()、用 jest.mock() 替代 vi.mock(),以及忽略类型安全(Vitest 是 TypeScript 优先)。
适用场景
适用于 JavaScript/TypeScript 项目的单元测试、组件测试、快照测试与源码内测试,尤其是采用 Vite 生态、需要 ESM 支持或希望从 Jest 迁移到 Vitest 的项目。
限制
仅当任务与上游来源及本地项目上下文明确匹配时使用本技能。应用变更前需验证命令、生成的代码、依赖、凭证以及外部服务行为。示例不能替代针对具体环境的测试、安全审查,或在破坏性、高成本操作前取得的用户批准。
参考手册结构
技能提及的深入模式文档 reference/playbook.md 包含十个章节:生产配置、模拟模式、React Testing Library、快照与内联快照、表驱动测试、源码内测试、API/集成测试、CI/CD 集成、调试速查以及最佳实践清单(13 项)。