






















@@ -63,6 +63,14 @@ function createApi() {
6363return { api, registerCli, registerGatewayMethod, registerService, registerTool };
6464}
656566+function mockCallArg(mock: { mock: { calls: unknown[][] } }, index = 0, argIndex = 0): unknown {
67+const call = mock.mock.calls.at(index);
68+if (!call) {
69+throw new Error(`expected mock call ${index}`);
70+}
71+return call[argIndex];
72+}
73+6674function registerBrowserAutoEnableProbe(): BrowserAutoEnableProbe {
6775const probes: BrowserAutoEnableProbe[] = [];
6876setupPlugin.register(
@@ -103,7 +111,7 @@ describe("browser plugin", () => {
103111const { api, registerTool } = createApi();
104112registerBrowserPlugin(api);
105113106-const factory = registerTool.mock.calls[0]?.[0];
114+const factory = mockCallArg(registerTool);
107115if (typeof factory !== "function") {
108116throw new Error("expected browser plugin to register a tool factory");
109117}
@@ -134,9 +142,9 @@ describe("browser plugin", () => {
134142registerBrowserPlugin(api);
135143136144expect(registerCli).toHaveBeenCalledTimes(1);
137-const registrar = registerCli.mock.calls[0]?.[0];
145+const registrar = mockCallArg(registerCli) as (params: { program: never }) => unknown;
138146expect(typeof registrar).toBe("function");
139-expect(registerCli.mock.calls[0]?.[1]).toEqual({
147+expect(mockCallArg(registerCli, 0, 1)).toEqual({
140148commands: ["browser"],
141149descriptors: [
142150{
@@ -155,10 +163,12 @@ describe("browser plugin", () => {
155163registerBrowserPlugin(api);
156164157165expect(registerGatewayMethod).toHaveBeenCalledTimes(1);
158-expect(registerGatewayMethod.mock.calls[0]?.[0]).toBe("browser.request");
159-const handler = registerGatewayMethod.mock.calls[0]?.[1];
166+expect(mockCallArg(registerGatewayMethod)).toBe("browser.request");
167+const handler = mockCallArg(registerGatewayMethod, 0, 1) as (request: {
168+method: string;
169+}) => unknown;
160170expect(typeof handler).toBe("function");
161-expect(registerGatewayMethod.mock.calls[0]?.[2]).toEqual({
171+expect(mockCallArg(registerGatewayMethod, 0, 2)).toEqual({
162172scope: "operator.admin",
163173});
164174await handler({ method: "browser.request" });
@@ -179,7 +189,11 @@ describe("browser plugin", () => {
179189const { api, registerService } = createApi();
180190registerBrowserPlugin(api);
181191182-const service = registerService.mock.calls[0]?.[0];
192+const service = mockCallArg(registerService) as {
193+id: string;
194+start: (...args: unknown[]) => unknown;
195+stop: (...args: unknown[]) => unknown;
196+};
183197expect(service?.id).toBe("browser-control");
184198expect(typeof service?.start).toBe("function");
185199expect(typeof service?.stop).toBe("function");
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。