Skip to content

收窄 Vitest 发现范围并补 Tauri API wrapper wire 测试 #57

Description

@ghbvf

现状

全量 review 发现前端测试范围和 wire wrapper 测试存在两个相关问题:

  1. package.json:9 的 test 脚本是裸 vitest run,没有限制 include/exclude。

    • 本地执行时跑了 41 个 test files。
    • 根 src 实际只有 4 个 *.test.ts。
    • worktrees/ 和 .pnpm-store/ 下的测试也被纳入发现范围。
  2. API wrapper 的 command/event wire 名称没有直接测试。

    • src/pr/api.ts:9 手写 prs:updated。
    • src/review/api.ts:8 手写 review:event。
    • src/pr/api.ts:47、src/review/api.ts:27 等 command 名和 camelCase 参数只被 store mock 间接覆盖,mock 后无法发现 wrapper 漂移。

额外验证:尝试 pnpm exec vitest run "src/**/*.test.ts" 没有匹配到测试文件,说明不能简单把脚本改成这个 glob;更稳的是在 Vitest/Vite 配置里设置 include/exclude。

三维根因

  • 代码:Vitest 使用默认发现范围,未排除仓库内本地 worktree/cache 目录。
  • 架构:前端 wire wrapper 是 Tauri contract 边界,但测试停在 store 层 mock。
  • 历史:ship/review 流程会在仓库下产生 worktrees/ 和 .pnpm-store/,默认 test discovery 与本地工作流冲突。

影响

  • 本地测试结果被无关 worktree/cache 污染,可能误报通过或失败。
  • wrapper command/event 名漂移时,store 测试仍可能通过。

修复方向

  • 最小方案:在 vite.config.ts 增加 test.exclude,排除 worktrees/**、.pnpm-store/**、node_modules/**、dist/**、src-tauri/target/**;必要时加 test.include。
  • 彻底方案:新增 src/pr/api.test.ts、src/review/api.test.ts、src/config/api.test.ts,mock ../api 的 invoke/listen,断言 command 名、事件名、参数形状。
  • 重构方案:把 Tauri command/event 名集中到生成或共享常量,并用测试锁定前后端 wire contract。

Files

  • package.json:9
  • vite.config.ts:8
  • src/pr/api.ts:9
  • src/pr/api.ts:47
  • src/review/api.ts:8
  • src/review/api.ts:27

Source

Discovered via full-project review with 6 subagents on 2026-06-17.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions