






















@@ -30,6 +30,14 @@ vi.mock("./tavily-client.js", () => ({
3030 runTavilyExtract,
3131}));
323233+function requireFirstMockArg(mock: ReturnType<typeof vi.fn>, label: string): unknown {
34+const [call] = mock.mock.calls;
35+if (!call) {
36+throw new Error(`Expected ${label}`);
37+}
38+return call[0];
39+}
40+3341function fakeApi(): OpenClawPluginApi {
3442return {
3543config: {},
@@ -217,12 +225,18 @@ describe("tavily tools", () => {
217225await searchTool.execute("search-call", { query: "openclaw" });
218226await extractTool.execute("extract-call", { urls: ["https://example.com"] });
219227220-const searchParams = runTavilySearch.mock.calls[0]?.[0];
221-expect(searchParams?.cfg).toBe(runtimeConfig);
222-expect(searchParams?.query).toBe("openclaw");
223-const extractParams = runTavilyExtract.mock.calls[0]?.[0] as TavilyExtractParams | undefined;
224-expect(extractParams?.cfg).toBe(runtimeConfig);
225-expect(extractParams?.urls).toEqual(["https://example.com"]);
228+const searchParams = requireFirstMockArg(runTavilySearch, "Tavily search params") as Record<
229+string,
230+unknown
231+>;
232+expect(searchParams.cfg).toBe(runtimeConfig);
233+expect(searchParams.query).toBe("openclaw");
234+const extractParams = requireFirstMockArg(
235+runTavilyExtract,
236+"Tavily extract params",
237+) as TavilyExtractParams;
238+expect(extractParams.cfg).toBe(runtimeConfig);
239+expect(extractParams.urls).toEqual(["https://example.com"]);
226240});
227241228242it("drops empty domain arrays and forwards query-scoped chunking", async () => {
@@ -260,11 +274,14 @@ describe("tavily tools", () => {
260274chunks_per_source: 2,
261275});
262276263-const extractParams = runTavilyExtract.mock.calls[0]?.[0] as TavilyExtractParams | undefined;
264-expect(extractParams?.cfg).toEqual({});
265-expect(extractParams?.urls).toEqual(["https://example.com"]);
266-expect(extractParams?.query).toBe("pricing");
267-expect(extractParams?.chunksPerSource).toBe(2);
277+const extractParams = requireFirstMockArg(
278+runTavilyExtract,
279+"Tavily extract params",
280+) as TavilyExtractParams;
281+expect(extractParams.cfg).toEqual({});
282+expect(extractParams.urls).toEqual(["https://example.com"]);
283+expect(extractParams.query).toBe("pricing");
284+expect(extractParams.chunksPerSource).toBe(2);
268285});
269286270287it("rejects chunks_per_source without query", async () => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。