





















@@ -19,19 +19,24 @@ function requireRecord(value: unknown, label: string): Record<string, unknown> {
1919return value as Record<string, unknown>;
2020}
212122+function gatewayCallAt(callIndex = 0) {
23+const call = mockCallGatewayTool.mock.calls[callIndex];
24+if (!call) {
25+throw new Error(`Expected gateway call ${callIndex + 1}`);
26+}
27+return call;
28+}
29+2230function gatewayRequestPayload(callIndex = 0) {
23-return requireRecord(
24-mockCallGatewayTool.mock.calls.at(callIndex)?.[2],
25-`gateway request payload ${callIndex + 1}`,
26-);
31+return requireRecord(gatewayCallAt(callIndex)[2], `gateway request payload ${callIndex + 1}`);
2732}
28332934function gatewayCallOptions(callIndex = 0) {
30-return mockCallGatewayTool.mock.calls.at(callIndex)?.[3];
35+return gatewayCallAt(callIndex)[3];
3136}
32373338function gatewayCallMethod(callIndex = 0) {
34-return mockCallGatewayTool.mock.calls.at(callIndex)?.[0];
39+return gatewayCallAt(callIndex)[0];
3540}
36413742function findApprovalEvent(
@@ -103,7 +108,7 @@ describe("Codex app-server approval bridge", () => {
103108"plugin.approval.waitDecision",
104109]);
105110expect(gatewayCallMethod()).toBe("plugin.approval.request");
106-expect(typeof mockCallGatewayTool.mock.calls.at(0)?.[1]).toBe("object");
111+expect(typeof gatewayCallAt(0)[1]).toBe("object");
107112const requestPayload = gatewayRequestPayload();
108113expect(requestPayload.pluginId).toBe("openclaw-codex-app-server");
109114expect(requestPayload.title).toBe("Codex app-server command approval");
@@ -611,7 +616,7 @@ describe("Codex app-server approval bridge", () => {
611616scope: "turn",
612617});
613618expect(gatewayCallMethod()).toBe("plugin.approval.request");
614-expect(typeof mockCallGatewayTool.mock.calls.at(0)?.[1]).toBe("object");
619+expect(typeof gatewayCallAt(0)[1]).toBe("object");
615620const requestPayload = gatewayRequestPayload();
616621expect(requestPayload.title).toBe("Codex app-server permission approval");
617622expect(requestPayload.toolName).toBe("codex_permission_approval");
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。