

























@@ -104,6 +104,16 @@ function buildCostTotals(overrides: Partial<CostUsageTotals> = {}): CostUsageTot
104104};
105105}
106106107+function expectSessionCostArgs(): Record<string, unknown> {
108+expect(loadSessionCostSummaryMock).toHaveBeenCalledTimes(1);
109+return (loadSessionCostSummaryMock.mock.calls[0] as unknown as [Record<string, unknown>])[0];
110+}
111+112+function expectFastModeArgs(): Record<string, unknown> {
113+expect(resolveFastModeStateMock).toHaveBeenCalledTimes(1);
114+return (resolveFastModeStateMock.mock.calls[0] as unknown as [Record<string, unknown>])[0];
115+}
116+107117describe("handleUsageCommand", () => {
108118beforeEach(() => {
109119vi.clearAllMocks();
@@ -130,12 +140,9 @@ describe("handleUsageCommand", () => {
130140const result = await handleUsageCommand(buildUsageParams(), true);
131141132142expect(result?.shouldContinue).toBe(false);
133-expect(loadSessionCostSummaryMock).toHaveBeenCalledWith(
134-expect.objectContaining({
135-agentId: "target",
136-sessionId: "session-1",
137-}),
138-);
143+const args = expectSessionCostArgs();
144+expect(args.agentId).toBe("target");
145+expect(args.sessionId).toBe("session-1");
139146});
140147141148it("prefers the target session entry from sessionStore for /usage cost", async () => {
@@ -155,12 +162,9 @@ describe("handleUsageCommand", () => {
155162156163await handleUsageCommand(params, true);
157164158-expect(loadSessionCostSummaryMock).toHaveBeenCalledWith(
159-expect.objectContaining({
160-sessionId: "target-session",
161-sessionFile: "/tmp/target-session.jsonl",
162-}),
163-);
165+const args = expectSessionCostArgs();
166+expect(args.sessionId).toBe("target-session");
167+expect(args.sessionFile).toBe("/tmp/target-session.jsonl");
164168});
165169166170it("prefers the target session entry from sessionStore for /usage footer mode", async () => {
@@ -202,13 +206,10 @@ describe("handleFastCommand", () => {
202206const result = await handleFastCommand(params, true);
203207204208expect(result?.shouldContinue).toBe(false);
205-expect(resolveFastModeStateMock).toHaveBeenCalledWith(
206-expect.objectContaining({
207-agentId: "target",
208-provider: "openai",
209-model: "gpt-5.4",
210-}),
211-);
209+const args = expectFastModeArgs();
210+expect(args.agentId).toBe("target");
211+expect(args.provider).toBe("openai");
212+expect(args.model).toBe("gpt-5.4");
212213expect(result?.reply?.text).toContain("Current fast mode: on");
213214});
214215@@ -232,14 +233,10 @@ describe("handleFastCommand", () => {
232233233234await handleFastCommand(params, true);
234235235-expect(resolveFastModeStateMock).toHaveBeenCalledWith(
236-expect.objectContaining({
237-sessionEntry: expect.objectContaining({
238-sessionId: "target-session",
239-fastMode: true,
240-}),
241-}),
242-);
236+const args = expectFastModeArgs();
237+const sessionEntry = args.sessionEntry as Record<string, unknown> | undefined;
238+expect(sessionEntry?.sessionId).toBe("target-session");
239+expect(sessionEntry?.fastMode).toBe(true);
243240});
244241245242it("clears fast mode for /fast default", async () => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。