修复 UI 素材提取集成测试的过期上传 mock
Project CI / Backend tests (pull_request) Successful in 4m32s
Project CI / Repository checks (pull_request) Successful in 51s
Project CI / Native shell tests (pull_request) Successful in 12m18s
Project CI / Frontend tests (pull_request) Successful in 2m38s

inline 源图上传改走 object-only 版本后,该文件的
uploadEditorMediaAssetObjectFile 仍是裸 vi.fn(),返回 undefined,
取 objectKey 抛的 TypeError 被 extractUiDesignAssets 的 catch
吞成 window.alert,最终只表现为提取接口零调用。

补上配置好的 mock,并把两个 mock 的返回补齐成真实返回形状。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-04 09:05:56 +00:00
parent 3bea6441a8
commit f88b633146
@@ -40,6 +40,7 @@ const loadOrCreateRecentEditorProjectMock = vi.hoisted(() => vi.fn());
const renameEditorProjectMock = vi.hoisted(() => vi.fn());
const saveEditorProjectLayoutMock = vi.hoisted(() => vi.fn());
const uploadEditorMediaAssetFileMock = vi.hoisted(() => vi.fn());
const uploadEditorMediaAssetObjectFileMock = vi.hoisted(() => vi.fn());
vi.mock('../../services/image-editor/editorProjectClient', async () => {
const actual = await vi.importActual<
@@ -74,7 +75,10 @@ vi.mock('./ImageCanvasUiAssetExtractionRasterModel', () => ({
vi.mock('../../services/image-editor/editorMediaAssetUploadClient', () => ({
uploadEditorMediaAssetFile: uploadEditorMediaAssetFileMock,
uploadEditorMediaAssetObjectFile: vi.fn(),
// 中文注释:inline 源图上传走的是 object-only 版本,不是带签名 URL 的那个。留成裸 vi.fn()
// 会返回 undefined,取 objectKey 抛的 TypeError 被 extractUiDesignAssets 的 catch 吞成
// window.alert,最终只表现为「提取接口一次都没调」,报错里看不到任何线索。
uploadEditorMediaAssetObjectFile: uploadEditorMediaAssetObjectFileMock,
}));
vi.mock('./ImageCanvasProjectCoverSnapshotRenderer', () => ({
@@ -113,6 +117,17 @@ describe('ImageCanvasEditorView generation integration', () => {
objectKey:
'generated-character-drafts/editor/generation-references/marked-ui-design.png',
assetObjectId: 'asset-object-marked-ui-design',
legacyPublicPath:
'/generated-character-drafts/editor/generation-references/marked-ui-design.png',
src: 'https://oss.example.com/marked-ui-design.png',
});
uploadEditorMediaAssetObjectFileMock.mockReset();
uploadEditorMediaAssetObjectFileMock.mockResolvedValue({
objectKey:
'generated-character-drafts/editor/generation-references/marked-ui-design.png',
assetObjectId: 'asset-object-marked-ui-design',
legacyPublicPath:
'/generated-character-drafts/editor/generation-references/marked-ui-design.png',
});
});