























@@ -268,6 +268,18 @@ function requireRecord(value: unknown, label: string): Record<string, unknown> {
268268return value as Record<string, unknown>;
269269}
270270271+function requireMockCall(
272+mock: { mock: { calls: unknown[][] } },
273+index: number,
274+label: string,
275+): unknown[] {
276+const call = mock.mock.calls[index];
277+if (!call) {
278+throw new Error(`expected ${label} mock call ${index}`);
279+}
280+return call;
281+}
282+271283async function captureRejection(promise: Promise<unknown>): Promise<unknown> {
272284try {
273285await promise;
@@ -310,8 +322,7 @@ async function expectFallsBackToHaiku(params: {
310322311323expect(result.result).toBe("ok");
312324expect(run).toHaveBeenCalledTimes(2);
313-expect(run.mock.calls.at(1)?.[0]).toBe("anthropic");
314-expect(run.mock.calls.at(1)?.[1]).toBe("claude-haiku-3-5");
325+expect(requireMockCall(run, 1, "fallback run")).toEqual(["anthropic", "claude-haiku-3-5"]);
315326}
316327317328function createOverrideFailureRun(params: {
@@ -678,7 +689,7 @@ describe("runWithModelFallback", () => {
678689679690expect(result.result).toEqual({ payloads: [{ text: "fallback ok" }] });
680691expect(run).toHaveBeenCalledTimes(2);
681-expect(run.mock.calls.at(1)).toEqual(["anthropic", "claude-haiku-3-5"]);
692+expect(requireMockCall(run, 1, "fallback run")).toEqual(["anthropic", "claude-haiku-3-5"]);
682693expect(result.attempts[0]?.provider).toBe("openai-codex");
683694expect(result.attempts[0]?.model).toBe("gpt-5.4");
684695expect(result.attempts[0]?.reason).toBe("format");
@@ -878,7 +889,7 @@ describe("runWithModelFallback", () => {
878889});
879890880891expect(onError).toHaveBeenCalledTimes(1);
881-const errorCall = requireRecord(onError.mock.calls.at(0)?.[0], "onError payload");
892+const errorCall = requireRecord(requireMockCall(onError, 0, "onError")[0], "onError payload");
882893expect(errorCall.provider).toBe("openai");
883894expect(errorCall.model).toBe("gpt-4.1-mini");
884895expect(errorCall.attempt).toBe(1);
@@ -1257,7 +1268,7 @@ describe("runWithModelFallback", () => {
1257126812581269expect(result.result).toBe("ok");
12591270expect(run).toHaveBeenCalledTimes(2);
1260-expect(run.mock.calls.at(1)).toEqual(testCase.expectedFallback);
1271+expect(requireMockCall(run, 1, "fallback run")).toEqual(testCase.expectedFallback);
12611272if (testCase.expectedReason) {
12621273expect(result.attempts).toHaveLength(1);
12631274expect(result.attempts[0]?.reason).toBe(testCase.expectedReason);
@@ -1357,7 +1368,7 @@ describe("runWithModelFallback", () => {
1357136813581369expect(result.result).toBe("ok");
13591370expect(run).toHaveBeenCalledTimes(1);
1360-expect(run.mock.calls.at(0)?.[0]).toBe("openrouter");
1371+expect(requireMockCall(run, 0, "fallback run")[0]).toBe("openrouter");
13611372expect(result.attempts).toStrictEqual([]);
13621373});
13631374此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。