


























@@ -49,6 +49,17 @@ vi.mock("../runtime.js", () => ({
4949defaultRuntime: runtimeState.defaultRuntime,
5050}));
515152+function requireRecord(value: unknown): Record<string, unknown> {
53+expect(value).toBeTruthy();
54+expect(typeof value).toBe("object");
55+expect(Array.isArray(value)).toBe(false);
56+return value as Record<string, unknown>;
57+}
58+59+function runtimeErrors(): string[] {
60+return runtimeState.defaultRuntime.error.mock.calls.map(([message]) => String(message));
61+}
62+5263describe("registerDirectoryCli", () => {
5364beforeEach(() => {
5465vi.clearAllMocks();
@@ -96,23 +107,16 @@ describe("registerDirectoryCli", () => {
96107from: "user",
97108});
9810999-expect(mocks.resolveInstallableChannelPlugin).toHaveBeenCalledWith(
100-expect.objectContaining({
101-rawChannel: "demo-directory",
102-allowInstall: true,
103-}),
104-);
105-expect(mocks.replaceConfigFile).toHaveBeenCalledWith({
106-nextConfig: expect.objectContaining({
107-plugins: { entries: { "demo-directory": { enabled: true } } },
108-}),
109-baseHash: "config-1",
110+const installArgs = requireRecord(mocks.resolveInstallableChannelPlugin.mock.calls[0]?.[0]);
111+expect(installArgs.rawChannel).toBe("demo-directory");
112+expect(installArgs.allowInstall).toBe(true);
113+const replaceArgs = requireRecord(mocks.replaceConfigFile.mock.calls[0]?.[0]);
114+expect(replaceArgs.nextConfig).toEqual({
115+channels: {},
116+plugins: { entries: { "demo-directory": { enabled: true } } },
110117});
111-expect(self).toHaveBeenCalledWith(
112-expect.objectContaining({
113-accountId: "default",
114-}),
115-);
118+expect(replaceArgs.baseHash).toBe("config-1");
119+expect(requireRecord(self.mock.calls[0]?.[0]).accountId).toBe("default");
116120expect(runtimeState.defaultRuntime.log).toHaveBeenCalledWith(
117121JSON.stringify({ id: "self-1", name: "Family Phone" }, null, 2),
118122);
@@ -149,11 +153,7 @@ describe("registerDirectoryCli", () => {
149153cfg: autoEnabledConfig,
150154channel: null,
151155});
152-expect(self).toHaveBeenCalledWith(
153-expect.objectContaining({
154-cfg: autoEnabledConfig,
155-}),
156-);
156+expect(requireRecord(self.mock.calls[0]?.[0]).cfg).toBe(autoEnabledConfig);
157157expect(mocks.replaceConfigFile).toHaveBeenCalledWith({
158158nextConfig: autoEnabledConfig,
159159baseHash: "config-1",
@@ -192,13 +192,10 @@ describe("registerDirectoryCli", () => {
192192{ from: "user" },
193193);
194194195-expect(listPeersLive).toHaveBeenCalledWith(
196-expect.objectContaining({
197-accountId: "default",
198-query: "ada",
199-limit: 5,
200-}),
201-);
195+const listPeersLiveArgs = requireRecord(listPeersLive.mock.calls[0]?.[0]);
196+expect(listPeersLiveArgs.accountId).toBe("default");
197+expect(listPeersLiveArgs.query).toBe("ada");
198+expect(listPeersLiveArgs.limit).toBe(5);
202199expect(listPeers).not.toHaveBeenCalled();
203200expect(runtimeState.defaultRuntime.log).toHaveBeenCalledWith(
204201JSON.stringify([{ id: "user:live", kind: "user" }], null, 2),
@@ -224,11 +221,7 @@ describe("registerDirectoryCli", () => {
224221from: "user",
225222});
226223227-expect(listGroups).toHaveBeenCalledWith(
228-expect.objectContaining({
229-accountId: "default",
230-}),
231-);
224+expect(requireRecord(listGroups.mock.calls[0]?.[0]).accountId).toBe("default");
232225expect(runtimeState.defaultRuntime.log).toHaveBeenCalledWith(
233226JSON.stringify([{ id: "channel:config", kind: "group" }], null, 2),
234227);
@@ -254,15 +247,14 @@ describe("registerDirectoryCli", () => {
254247}),
255248).rejects.toThrow("exit:1");
256249257-expect(mocks.resolveInstallableChannelPlugin).toHaveBeenCalledWith(
258-expect.objectContaining({
259-rawChannel: "openclaw-weixin",
260-allowInstall: true,
261-}),
262-);
250+const installArgs = requireRecord(mocks.resolveInstallableChannelPlugin.mock.calls[0]?.[0]);
251+expect(installArgs.rawChannel).toBe("openclaw-weixin");
252+expect(installArgs.allowInstall).toBe(true);
263253expect(mocks.replaceConfigFile).not.toHaveBeenCalled();
264-expect(runtimeState.defaultRuntime.error).toHaveBeenCalledWith(
265-expect.stringContaining("Channel openclaw-weixin does not support directory peers"),
266-);
254+expect(
255+runtimeErrors().some((message) =>
256+message.includes("Channel openclaw-weixin does not support directory peers"),
257+),
258+).toBe(true);
267259});
268260});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。