返回 Bug 清单
BUG-0361project-13中待处理backend-logic

测试套件老化双症 —— 函数签名改了 mock 不同步 + ESM 专属 API 跑在 CJS 测试环境

发现:2026-10-01验证:2026-10-09置信度:85%

症状

测试失败的原因不在被测代码有 bug,而在测试自身过期——签名演进、环境 API、mock 导出三处老化叠加,测试从安全网变成噪音源。

根因

①/③ 接口签名变更没有『同步修改 mock』的强制动作,TS 对 jest.mock 返回值的类型校验默认宽松;② Jest CJS 环境没有 import.meta,源码用了 ESM 专属 API 但测试栈未跟进(换 vitest 或注入 polyfill 都可解)。

修复方案

1) mock 与源码同文件/同目录强关联,重构签名时 IDE 全局重命名覆盖 mock; 2) 用 vitest(原生支持 import.meta)或 jest 的 moduleNameMapper 注入 polyfill; 3) 『修测试』与『修代码』同 PR 强制——CI 红灯不允许解释性豁免过夜。

检测命令

npx jest <suite> 2>&1 | grep -c 'Cannot read properties\|import.meta';mock 导出 vs 源码导出 diff

错误签名

① AgentReActServiceTest 3 用例失败:plan() 2参→3参(memoryHint)后 mock 未同步;② TutorApi.test.ts 全挂:源码 import.meta.env 在 Jest CJS 下不可用;③ AiQa.test.tsx mock 仍导出旧函数而组件已改 askAiQuestionStream

技术信息

来源项目

project-13

涉及文件

AgentReActServiceTest.java, TutorApi.test.ts

标签

test-aging, stale-mocks, import-meta, jest, vitest...