


























@@ -91,6 +91,22 @@ function expectFields(value: unknown, expected: Record<string, unknown>): void {
9191}
9292}
939394+function firstMockCall(mock: { mock: { calls: unknown[][] } }, label: string): unknown[] {
95+const call = mock.mock.calls.at(0);
96+if (!call) {
97+throw new Error(`expected ${label} to be called`);
98+}
99+return call;
100+}
101+102+function firstCompletionContext(): { systemPrompt?: string } | undefined {
103+const [, context] = firstMockCall(completeMock, "complete") as [
104+unknown,
105+{ systemPrompt?: string } | undefined,
106+];
107+return context;
108+}
109+94110async function stubPdfToolInfra(
95111agentDir: string,
96112params?: {
@@ -333,7 +349,7 @@ describe("createPdfTool", () => {
333349pdf: `media://inbound/${mediaId}`,
334350});
335351336-const [loadRef, loadOptions] = loadSpy.mock.calls[0] ?? [];
352+const [loadRef, loadOptions] = firstMockCall(loadSpy, "loadWebMediaRaw");
337353expect(loadRef).toBe(`media://inbound/${mediaId}`);
338354expectFields(loadOptions, { localRoots: [] });
339355expect(result.content).toEqual([{ type: "text", text: "native summary" }]);
@@ -369,7 +385,7 @@ describe("createPdfTool", () => {
369385pdf: "http://198.18.0.153/doc.pdf",
370386});
371387372-const [loadRef, loadOptions] = loadSpy.mock.calls[0] ?? [];
388+const [loadRef, loadOptions] = firstMockCall(loadSpy, "loadWebMediaRaw");
373389expect(loadRef).toBe("http://198.18.0.153/doc.pdf");
374390expectFields(loadOptions, {
375391ssrfPolicy: { allowRfc2544BenchmarkRange: true },
@@ -400,7 +416,7 @@ describe("createPdfTool", () => {
400416pdf: mediaPath,
401417});
402418403-const [loadRef, loadOptions] = loadSpy.mock.calls[0] ?? [];
419+const [loadRef, loadOptions] = firstMockCall(loadSpy, "loadWebMediaRaw");
404420expect(loadRef).toBe(mediaPath);
405421expect(loadOptions).toBeTypeOf("object");
406422});
@@ -424,8 +440,10 @@ describe("createPdfTool", () => {
424440});
425441426442const ensureModelsJsonMock = vi.mocked(modelsConfig.ensureOpenClawModelsJson);
427-const [modelsConfigArg, modelsAgentDir, modelsOptions] =
428-ensureModelsJsonMock.mock.calls[0] ?? [];
443+const [modelsConfigArg, modelsAgentDir, modelsOptions] = firstMockCall(
444+ensureModelsJsonMock,
445+"ensureOpenClawModelsJson",
446+);
429447expectFields(
430448(modelsConfigArg as { agents?: { defaults?: unknown } } | undefined)?.agents?.defaults,
431449{
@@ -486,8 +504,7 @@ describe("createPdfTool", () => {
486504native: false,
487505model: OPENAI_PDF_MODEL,
488506});
489-const [, context] = completeMock.mock.calls[0] ?? [];
490-expect(context?.systemPrompt).toBeUndefined();
507+expect(firstCompletionContext()?.systemPrompt).toBeUndefined();
491508});
492509});
493510@@ -524,8 +541,7 @@ describe("createPdfTool", () => {
524541model: CODEX_PDF_MODEL,
525542});
526543expect(completeMock).toHaveBeenCalledTimes(1);
527-const [, context] = completeMock.mock.calls[0] ?? [];
528-expect(context?.systemPrompt).toContain("Analyze the provided PDF content");
544+expect(firstCompletionContext()?.systemPrompt).toContain("Analyze the provided PDF content");
529545});
530546});
531547@@ -562,8 +578,7 @@ describe("createPdfTool", () => {
562578model: CODEX_PDF_MODEL,
563579});
564580expect(completeMock).toHaveBeenCalledTimes(1);
565-const [, context] = completeMock.mock.calls[0] ?? [];
566-expect(context?.systemPrompt).toContain("Analyze the provided PDF content");
581+expect(firstCompletionContext()?.systemPrompt).toContain("Analyze the provided PDF content");
567582});
568583});
569584此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。