补齐 editorProjectClient 超时契约的断言
给 saveEditorProjectLayout 与 loadEditorProject 补超时后,两条精确参数断言失败:
toHaveBeenCalledWith 要求参数完全匹配,新增第四个参数即不匹配。
把 { timeoutMs: 60_000 } 写进断言,而不是放宽成 anything()。超时是契约的一部分
——一个被 flushProjectPersistence 同步等待在提交路径上、一个在对账路径上,没有
上界会把在途占位拖过存活窗口。写死之后谁删掉它测试就会红;放宽则等于让刚建立的
上界失去看守。去掉生产代码里的两个超时,两条断言同时变红。
真正的问题是验证方式:改的是 services 下的文件,却只跑了 components 的测试。
这条链路横跨两个目录,往后验证同时覆盖两处。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -6163,3 +6163,11 @@
|
||||
- 三个常量构成一条跨文件不等式(提交前置预算、客户端 POST 超时、占位存活窗口),任一处被单独调大都会破坏它,后果是跨标签页误删。新增用例把这条不等式连同 30 秒余量一起钉住。本会话自己的占位另有归属登记豁免、不依赖该窗口,所以窗口只需覆盖跨标签页那一侧——这一点也写进了常量注释。
|
||||
- 验证:忙等用例用 `vi.getTimerCount()` 直接断言「不该挂定时器」,把 `resolveNext...` 改回未过滤版本后该用例变红。`vitest src/components/image-editor` 924 通过 / 74 文件,typecheck、eslint、check:encoding 通过。
|
||||
- 关联文档:`docs/technical/【前端架构】图片画布编辑器MVP接入方案-2026-06-11.md`。
|
||||
|
||||
## 2026-08-03 补齐 editorProjectClient 超时契约的断言
|
||||
|
||||
- 缺陷:给 `saveEditorProjectLayout` 与 `loadEditorProject` 补超时后,`editorProjectClient.test.ts` 的两条精确参数断言失败。`toHaveBeenCalledWith` 要求参数个数与内容完全匹配,新增第四个参数即不匹配。CI(任务 1645)在 `aa8ea401a` 上报出其中一条,另一条由本地复跑发现。
|
||||
- 处置:更新断言把 `{ timeoutMs: 60_000 }` 写进去,而不是放宽成 `expect.anything()`。超时是契约的一部分——这两个接口一个被 `flushProjectPersistence` 同步等待在提交路径上、一个在未知结果对账路径上,没有上界会把在途占位拖过存活窗口。断言写死之后谁删掉它测试就会红;放宽则等于让刚建立的上界失去看守。已验证:去掉生产代码里的两个超时,两条断言同时变红。
|
||||
- 真正的问题是验证方式而非测试:改的是 `src/services/image-editor/editorProjectClient.ts`,验证却只跑了 `vitest src/components/image-editor`,改动面与验证面完全对不上。这个盲区在本次会话中期分析另一份 CI 日志时已由我自己指出过,却没有改掉习惯,于是同一个盲区再次漏出——而且这次不是难复现的跨文件竞态,是本地一跑就红的确定性失败。
|
||||
- 约定:这条链路横跨 `src/components/image-editor/` 与 `src/services/image-editor/`,往后验证至少同时覆盖两处。不跑全量套件——本机有九条稳定的环境失败(符号链接、`0600` 权限模式、缺客户端 AppData 配置),噪音大于收益。
|
||||
- 关联文档:`docs/technical/【前端架构】图片画布编辑器MVP接入方案-2026-06-11.md`。
|
||||
|
||||
@@ -188,6 +188,10 @@ describe('editorProjectClient', () => {
|
||||
}),
|
||||
}),
|
||||
'保存图片画布工程失败',
|
||||
// 中文注释:超时是契约的一部分,写死在断言里而不是放宽成 anything()。这个接口被
|
||||
// flushProjectPersistence 同步等待在生成提交路径上,没有上界会把在途占位拖过存活
|
||||
// 窗口;断言写死之后,谁删掉它测试就会红。
|
||||
{ timeoutMs: 60_000 },
|
||||
);
|
||||
});
|
||||
|
||||
@@ -327,6 +331,9 @@ describe('editorProjectClient', () => {
|
||||
'/api/editor/projects/editor-project-1',
|
||||
{ method: 'GET' },
|
||||
'读取图片画布工程失败',
|
||||
// 中文注释:同上,超时写死在断言里。这是未知结果对账路径上的读取,挂住会让 catch
|
||||
// 迟迟不结束,连带把本会话对占位的归属登记一起拖过存活窗口。
|
||||
{ timeoutMs: 60_000 },
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user