
























@@ -58,7 +58,13 @@ describe("web monitor inbox", () => {
5858expected: Record<string, unknown>,
5959) {
6060expect(onMessage).toHaveBeenCalledTimes(1);
61-expect(onMessage).toHaveBeenCalledWith(expect.objectContaining(expected));
61+const message = onMessage.mock.calls[0]?.[0] as Record<string, unknown> | undefined;
62+if (!message) {
63+throw new Error("expected inbound group message");
64+}
65+for (const [key, value] of Object.entries(expected)) {
66+expect(message[key]).toEqual(value);
67+}
6268}
63696470it("captures media path for image messages", async () => {
@@ -73,11 +79,8 @@ describe("web monitor inbox", () => {
7379],
7480});
758176-expect(onMessage).toHaveBeenCalledWith(
77-expect.objectContaining({
78-body: "<media:image>",
79-}),
80-);
82+expect(onMessage).toHaveBeenCalledTimes(1);
83+expect(onMessage.mock.calls[0]?.[0]?.body).toBe("<media:image>");
8184expect(sock.readMessages).toHaveBeenCalledWith([
8285{
8386remoteJid: "888@s.whatsapp.net",
@@ -118,9 +121,11 @@ describe("web monitor inbox", () => {
118121connection: "close",
119122lastDisconnect: { error: { output: { statusCode: 500 } } },
120123});
121-await expect(reasonPromise).resolves.toEqual(
122-expect.objectContaining({ status: 500, isLoggedOut: false }),
123-);
124+await expect(reasonPromise).resolves.toEqual({
125+status: 500,
126+isLoggedOut: false,
127+error: { output: { statusCode: 500 } },
128+});
124129await listener.close();
125130});
126131@@ -136,7 +141,9 @@ describe("web monitor inbox", () => {
136141expect(sock.ev.listenerCount("messages.upsert")).toBe(0);
137142expect(sock.ev.listenerCount("connection.update")).toBe(0);
138143expect(sock.end).toHaveBeenCalledTimes(1);
139-expect(sock.end).toHaveBeenCalledWith(expect.any(Error));
144+const closeError = sock.end.mock.calls[0]?.[0];
145+expect(closeError).toBeInstanceOf(Error);
146+expect(closeError?.message).toBe("OpenClaw WhatsApp listener close");
140147expect(sock.ws.close).not.toHaveBeenCalled();
141148});
142149@@ -153,13 +160,10 @@ describe("web monitor inbox", () => {
153160],
154161});
155162156-expect(inboundLoggerInfoMock).toHaveBeenCalledWith(
157-expect.objectContaining({
158-body: "ping",
159-from: "+999",
160-}),
161-"inbound message",
162-);
163+expect(inboundLoggerInfoMock).toHaveBeenCalledTimes(1);
164+expect(inboundLoggerInfoMock.mock.calls[0]?.[0]?.body).toBe("ping");
165+expect(inboundLoggerInfoMock.mock.calls[0]?.[0]?.from).toBe("+999");
166+expect(inboundLoggerInfoMock.mock.calls[0]?.[1]).toBe("inbound message");
163167await listener.close();
164168});
165169@@ -213,14 +217,12 @@ describe("web monitor inbox", () => {
213217],
214218});
215219216-expect(onMessage).toHaveBeenCalledWith(
217-expect.objectContaining({
218-chatType: "group",
219-conversationId: "99999@g.us",
220-senderE164: "+777",
221-mentionedJids: ["123@s.whatsapp.net"],
222-}),
223-);
220+expectSingleGroupMessage(onMessage, {
221+chatType: "group",
222+conversationId: "99999@g.us",
223+senderE164: "+777",
224+mentionedJids: ["123@s.whatsapp.net"],
225+});
224226await listener.close();
225227});
226228此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。