返回 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...