SuperAPI AI 工具集

ts-testing

测试与质量

查看项目

更新于 10-15 21:48

技能介绍

用途:帮助在 TypeScript 项目中挑选测试运行器,并按其规则编写测试。适用于编写或配置 TS 测试、在 bun test 与 Vitest 之间取舍的场景。

主要能力:两个运行器共享类 Jest 的 API(describe/it/expect、生命周期钩子、快照、mock)。bun test 冷启动最快、零配置支持 TS/JSX,内置,1.3.13+ 提供 --parallel 与 --shard;单进程(除非加 --parallel)、覆盖率为实验性、mock 有限。Vitest 支持 V8/Istanbul 覆盖率、多 worker 的 CI 扩展、约与 Jest 对等、浏览器模式;依赖 Vite(5.x 为 peer dep)与配置,冷启动较慢。

使用方式:Bun 示例从 "bun:test" 导入 test、expect,运行 bun test --coverage;Vitest 示例从 "vitest" 导入,运行 npx vitest run --coverage。决策指引:新项目、Bun 运行时、快速本地 TDD 选 bun test;大型套件或重 CI 并行选 Vitest;从 Jest 迁移或需完整覆盖率选 Vitest;需真实浏览器组件/DOM 选 Vitest 浏览器模式(Playwright);零依赖脚本或 CLI 选 bun test。

关键规则:每个包只用一个运行器,不要混用 bun:test 与 vitest 导入;当运行器实为 Vitest 时用 bun run test 而非 bun test;覆盖率要设显式阈值,低于目标即让 CI 失败;保持测试确定性,隔离共享状态,可用 --randomize(Bun)发现顺序依赖;在边界(网络/文件系统/时间)做 mock,而非内部实现细节。

最佳实践:测试与源码同目录放置为 *.test.ts;在每个 waitFor/异步块内断言;为网络相关测试设置单测超时。避免依赖测试执行顺序,避免把实验性 Bun 覆盖率作为大套件的唯一质量关卡。

限制:不覆盖框架专属测试(React 组件见 react-testing,Laravel 见 laravel-testing)与浏览器 E2E 套件。文档提到的 Agent 工作流涉及 fuse-ai-pilot、Context7、Exa 等工具,具体安装与配置细节暂未提供。