From 72f299ee4055ba354c4a146a4002c7398b0f48ee Mon Sep 17 00:00:00 2001 From: Suzumiya Date: Sun, 4 Oct 2026 00:30:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=20AGC=20=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E4=B8=8E=20tsconfig=20lib=20=E4=B8=8D=E5=85=BC=E5=AE=B9?= =?UTF-8?q?=E7=9A=84=20Promise.withResolvers=20=E7=94=A8=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 改动文件:apps/ai-game-creator-shell/tests/gameDistributionPublishPanel.test.tsx(仅此一个文件) - 写法替换:把 `Promise.withResolvers()` 换成本地手写 deferred(`let settlePending` + `new Promise((resolve) => { settlePending = resolve })`),resolve 仍由外部持有、promise 仍交回测试,与原 onResolve/onReject 语义一致(原 reject 未被使用) - 为什么不改 tsconfig:`Promise.withResolvers` 需要 lib ES2024,而 apps/ai-game-creator-shell/tsconfig.json 是 target/lib ES2022;为单个测试把 lib 提到 ES2024 会改整个 AGC 客户端的编译目标与运行时假设,影响面远大于此处需求,故只在测试内手写等价 deferred - 验证:npm run agc:typecheck 五步全 0(check:tests:types → tsc -p tsconfig.json → skill-pack:check → bundled-resources:check → check-config.mjs) --- .../tests/gameDistributionPublishPanel.test.tsx | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/apps/ai-game-creator-shell/tests/gameDistributionPublishPanel.test.tsx b/apps/ai-game-creator-shell/tests/gameDistributionPublishPanel.test.tsx index 5f9e1b78f..9dfa1ab29 100644 --- a/apps/ai-game-creator-shell/tests/gameDistributionPublishPanel.test.tsx +++ b/apps/ai-game-creator-shell/tests/gameDistributionPublishPanel.test.tsx @@ -377,9 +377,14 @@ describe('GameDistributionPublishPanel', () => { test('发布进行中按原生事件显示阶段与上传百分比', async () => { let resolvePublish: (value: unknown) => void = () => undefined; vi.mocked(publishLocalProjectGame).mockImplementation(() => { - const pending = Promise.withResolvers(); - resolvePublish = pending.resolve; - return pending.promise as never; + // `Promise.withResolvers` 需要 lib ES2024,本仓 AGC 走 ES2022;这里手写等价 deferred: + // resolve 由外部持有、promise 交回测试,语义与 withResolvers 一致(reject 原本未使用)。 + let settlePending: (value: unknown) => void = () => undefined; + const pending = new Promise((resolve) => { + settlePending = resolve; + }); + resolvePublish = settlePending; + return pending as never; }); eventFake = createTauriEventFake(); eventFake.install();