




















@@ -50,6 +50,15 @@ const ctx = {
5050markIdle: vi.fn(),
5151};
525253+function expectDispatchPayloadFields(expected: Record<string, unknown>): void {
54+expect(dispatchMock).toHaveBeenCalledTimes(1);
55+const [payload] = dispatchMock.mock.calls[0] ?? [];
56+expect(payload).toBeTypeOf("object");
57+for (const [key, value] of Object.entries(expected)) {
58+expect((payload as Record<string, unknown>)[key]).toBe(value);
59+}
60+}
61+5362describe("tryDispatchAcpReplyHook", () => {
5463beforeEach(() => {
5564vi.clearAllMocks();
@@ -97,14 +106,12 @@ describe("tryDispatchAcpReplyHook", () => {
97106queuedFinal: true,
98107counts: { tool: 1, block: 2, final: 3 },
99108});
100-expect(dispatchMock).toHaveBeenCalledWith(
101-expect.objectContaining({
102-ctx: event.ctx,
103-cfg: ctx.cfg,
104-dispatcher: ctx.dispatcher,
105-bypassForCommand: true,
106-}),
107-);
109+expectDispatchPayloadFields({
110+ctx: event.ctx,
111+cfg: ctx.cfg,
112+dispatcher: ctx.dispatcher,
113+bypassForCommand: true,
114+});
108115});
109116110117it("returns unhandled when ACP dispatcher declines the turn", async () => {
@@ -141,14 +148,11 @@ describe("tryDispatchAcpReplyHook", () => {
141148// Non-tail, non-command ACP turns under deny must still flow through ACP
142149// runtime so session/tool state stays consistent — delivery suppression is
143150// handled inside the ACP delivery path via suppressUserDelivery.
144-expect(dispatchMock).toHaveBeenCalledOnce();
145-expect(dispatchMock).toHaveBeenCalledWith(
146-expect.objectContaining({
147-suppressUserDelivery: true,
148-suppressReplyLifecycle: true,
149-bypassForCommand: false,
150-}),
151-);
151+expectDispatchPayloadFields({
152+suppressUserDelivery: true,
153+suppressReplyLifecycle: true,
154+bypassForCommand: false,
155+});
152156expect(result).toEqual({
153157handled: true,
154158queuedFinal: false,
@@ -204,10 +208,8 @@ describe("tryDispatchAcpReplyHook", () => {
204208);
205209206210expect(result).toBeUndefined();
207-expect(dispatchMock).toHaveBeenCalledWith(
208-expect.objectContaining({
209-bypassForCommand: true,
210-}),
211-);
211+expectDispatchPayloadFields({
212+bypassForCommand: true,
213+});
212214});
213215});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。