SuperAPI AI 工具集

vitest

测试与质量

查看项目

更新于 10-16 03:41

技能介绍

用途:整理 Vitest 配置的最佳实践,用于审计 vitest.config.ts、优化 CI 以及调试测试。测试哲学(行为与实现、TDD、何时 mock)另见 /testing-philosophy。

主要能力与规则:Node 22+ 建议使用 pool: 'forks',threads 存在已知问题;CI 优化可单 worker、关闭 watch,并在安全时启用 isolate: false;覆盖率必须定义 coverage.include,默认排除过多;mock 优先用 vi.spyOn 而非 vi.mock,避免提升(hoisting)陷阱;RTL cleanup 需要配置 globals: true。

内存安全(强制):watch 模式每个进程约占 2 GB,12 个仓库可达 24+ GB 导致机器崩溃。因此 test 脚本必须是 vitest run,不能是裸 vitest;Hook/CI 子进程使用 env={**os.environ, "CI": "true"};进程池用 forks,在 ≤36 GB 机器上 maxForks: 4;禁止在自动化/agent 环境运行 vitest --watch;禁止从 hook/脚本委派超过 3 个并行 agent。接入新仓库时应立即检查 package.json 的 test 脚本。

用法要点:CI 配置示例中设置 pool: 'forks'、poolOptions.forks.singleFork: true、isolate: false、reporters: ['verbose']、coverage.reportOnFailure: true。覆盖率建议 provider: 'v8'(Vitest 3.2+ 更准确)、include: ['src/**']、reporter: ['text', 'lcov']、reportOnFailure: true。mock 优先 const spy = vi.spyOn(service, 'method').mockReturnValue('mocked'),避免 vi.mock('./module', () => ({ fn: vi.fn() }))。

适用场景:Vitest 项目配置审计、CI 性能调优、覆盖率设置、mock 调试。限制:具体版本行为、平台差异及未提及的配置项暂未提供。