ts-testing 是一个面向 TypeScript 测试的 Claude 插件技能,属于 fusengine/claude-plugins,页面地址为 https://www.skills.sh/fusengine/claude-plugins/ts-testing。其定位是在编写或配置 TypeScript 测试、并在 bun test 与 Vitest 之间做选择时使用;不适用于 React 等框架专属测试(React 组件测试应使用 react-expert 的 react-testing),也不覆盖 Laravel 测试与浏览器 E2E 套件。
主要能力与内容:
- 运行器选择:bun test 与 Vitest 共享类似 Jest 的 API(describe/it/expect、生命周期钩子、快照、mock),差异在速度、覆盖率成熟度和 CI 扩展性。资料给出的对比为:bun test 冷启动最快、零配置支持 TS/JSX、内置运行器,支持 --parallel 工作进程与 --shard(1.3.13+);弱点是默认单进程(除非启用 --parallel)、覆盖率为实验性、mock 有限制。Vitest 支持 V8/Istanbul 覆盖率、多 worker 的 CI 扩展、接近 Jest 的兼容度与浏览器模式;弱点是需要 Vite(5.x 中为 peer 依赖)和配置,冷启动较慢。
- 关键规则:每个包只使用一个运行器,禁止混用 bun:test 与 vitest 导入;当配置的运行器是 Vitest 时应使用 bun run test 而非 bun test,否则 Bun 会运行自己的测试;显式设置覆盖率阈值,使 CI 在低于目标时失败而不只是报告;测试需确定性,隔离共享状态,可用 --randomize(Bun)发现顺序依赖问题;在边界处 mock(网络/文件系统/时间),不要 mock 内部实现细节。
- 决策指引:全新项目、Bun 运行时、本地快速 TDD 选 bun test;大型测试套件或 CI 需要重度并行选 Vitest(多 worker);从 Jest 迁移或需要完整覆盖率选 Vitest(V8 + Istanbul);真实浏览器中的组件/DOM 测试选 Vitest 浏览器模式(Playwright);零依赖脚本或 CLI 选 bun test。完整矩阵见 references/choosing-runner.md。
- 参考文档与模板:references/choosing-runner.md(决定 bun test 与 Vitest)、references/bun-test.md(使用 bun test)、references/vitest.md(使用 Vitest)、references/common-patterns.md(编写 describe/it/mock/snapshot);模板包括 references/templates/bun-setup.md(bunfig.toml 与首个 Bun 测试)和 references/templates/vitest-setup.md(vitest.config.ts、覆盖率与 CI)。
使用方式:资料描述了一个供智能体遵循的工作流:在任何实现之前并行启动 3 个 agent(fuse-ai-pilot:explore-codebase 检测现有运行器、配置与测试布局;fuse-ai-pilot:research-expert 通过 Context7/Exa 核实最新 bun test / Vitest 文档;mcp__context7__query-docs 检查 mock、覆盖率与配置 API),实现完成后运行 fuse-ai-pilot:sniper 进行验证。快速开始示例:Bun 侧从 "bun:test" 导入 test、expect,运行 bun test --coverage;Vitest 侧从 "vitest" 导入,运行 npx vitest run --coverage。
最佳实践:将测试以 *.test.ts 与源码放在一起;在每个 waitFor/异步块内断言;为网络相关测试设置单测试超时。避免:在同一包中混用两个运行器、依赖测试执行顺序、在大型套件中把实验性 Bun 覆盖率作为唯一质量门槛。
限制:资料未提供该技能的收费、价格、平台支持范围等商业信息,这些内容暂未提供。