

























@@ -5,7 +5,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
55import type { OpenClawConfig } from "../config/config.js";
66import { loggingState } from "../logging/state.js";
77import type { RuntimeEnv } from "../runtime.js";
8-import { agentCliCommand } from "./agent-via-gateway.js";
8+import { __testing as agentViaGatewayTesting, agentCliCommand } from "./agent-via-gateway.js";
99import type { agentCommand as AgentCommand } from "./agent.js";
10101111const loadConfig = vi.hoisted(() => vi.fn());
@@ -21,6 +21,7 @@ const isGatewayTransportError = vi.hoisted(() =>
2121);
2222const agentCommand = vi.hoisted(() => vi.fn());
2323const agentModuleLoadCount = vi.hoisted(() => vi.fn());
24+const loadAgentSessionModuleMock = vi.hoisted(() => vi.fn());
24252526const runtime: RuntimeEnv = {
2627log: vi.fn(),
@@ -147,6 +148,17 @@ async function waitForAgentCommandCall(expectedCalls = 1) {
147148expect(agentCommand).toHaveBeenCalledTimes(expectedCalls);
148149}
149150151+async function waitForGatewayCall(expectedCalls = 1) {
152+for (
153+let attempt = 0;
154+attempt < 50 && callGateway.mock.calls.length < expectedCalls;
155+attempt += 1
156+) {
157+await new Promise<void>((resolve) => setTimeout(resolve, 0));
158+}
159+expect(callGateway).toHaveBeenCalledTimes(expectedCalls);
160+}
161+150162function mockMessages(mock: unknown): string[] {
151163const calls = (mock as { mock?: { calls?: unknown[][] } }).mock?.calls ?? [];
152164return calls.map(([message]) => String(message));
@@ -209,6 +221,9 @@ let originalForceConsoleToStderr = false;
209221210222beforeEach(() => {
211223vi.clearAllMocks();
224+agentViaGatewayTesting.resetLazyImportsForTests();
225+loadAgentSessionModuleMock.mockImplementation(async () => await import("./agent/session.js"));
226+agentViaGatewayTesting.setAgentSessionModuleLoaderForTests(loadAgentSessionModuleMock);
212227originalForceConsoleToStderr = loggingState.forceConsoleToStderr;
213228loggingState.forceConsoleToStderr = false;
214229});
@@ -270,6 +285,7 @@ describe("agentCliCommand", () => {
270285expect(params.sessionId).toBeUndefined();
271286expect(params.to).toBeUndefined();
272287expect(agentCommand).not.toHaveBeenCalled();
288+expect(loadAgentSessionModuleMock).not.toHaveBeenCalled();
273289});
274290});
275291@@ -529,7 +545,7 @@ describe("agentCliCommand", () => {
529545const run = agentCliCommand({ message: "hi", to: "+1555" }, runtime, {
530546process: signals.processLike,
531547});
532-await Promise.resolve();
548+await waitForGatewayCall();
533549signals.emit(signalName);
534550expect(signals.listenerCount("SIGTERM")).toBe(0);
535551expect(signals.listenerCount("SIGINT")).toBe(0);
@@ -596,7 +612,7 @@ describe("agentCliCommand", () => {
596612process: signals.processLike,
597613},
598614);
599-await Promise.resolve();
615+await waitForGatewayCall();
600616signals.emit("SIGTERM");
601617602618await run;
@@ -638,7 +654,7 @@ describe("agentCliCommand", () => {
638654const run = agentCliCommand({ message: "hi", to: "+1555" }, runtime, {
639655process: signals.processLike,
640656});
641-await Promise.resolve();
657+await waitForGatewayCall();
642658signals.emit("SIGTERM");
643659644660await run;
@@ -702,7 +718,7 @@ describe("agentCliCommand", () => {
702718process: signals.processLike,
703719},
704720);
705-await Promise.resolve();
721+await waitForGatewayCall();
706722signals.emit("SIGTERM");
707723708724await run;
@@ -778,7 +794,7 @@ describe("agentCliCommand", () => {
778794process: signals.processLike,
779795},
780796);
781-await Promise.resolve();
797+await waitForGatewayCall();
782798signals.emit("SIGTERM");
783799784800await run;
@@ -856,7 +872,7 @@ describe("agentCliCommand", () => {
856872process: signals.processLike,
857873},
858874);
859-await Promise.resolve();
875+await waitForGatewayCall();
860876signals.emit("SIGTERM");
861877862878await run;
@@ -932,7 +948,7 @@ describe("agentCliCommand", () => {
932948process: signals.processLike,
933949},
934950);
935-await Promise.resolve();
951+await waitForGatewayCall();
936952signals.emit("SIGTERM");
937953938954await run;
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。