现状
全量 review 发现前端测试范围和 wire wrapper 测试存在两个相关问题:
-
package.json:9 的 test 脚本是裸 vitest run,没有限制 include/exclude。
- 本地执行时跑了 41 个 test files。
- 根
src 实际只有 4 个 *.test.ts。
worktrees/ 和 .pnpm-store/ 下的测试也被纳入发现范围。
-
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.
现状
全量 review 发现前端测试范围和 wire wrapper 测试存在两个相关问题:
package.json:9的test脚本是裸vitest run,没有限制 include/exclude。src实际只有 4 个*.test.ts。worktrees/和.pnpm-store/下的测试也被纳入发现范围。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。三维根因
worktrees/和.pnpm-store/,默认 test discovery 与本地工作流冲突。影响
修复方向
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 名、事件名、参数形状。Files
package.json:9vite.config.ts:8src/pr/api.ts:9src/pr/api.ts:47src/review/api.ts:8src/review/api.ts:27Source
Discovered via full-project review with 6 subagents on 2026-06-17.