




















@@ -18,6 +18,14 @@ type SentMediaParams = {
1818mediaUrl?: string;
1919};
202021+function latestMockArg(mock: ReturnType<typeof vi.fn>, label: string): unknown {
22+const call = mock.mock.calls[mock.mock.calls.length - 1];
23+if (!call) {
24+throw new Error(`expected ${label} call`);
25+}
26+return call[0];
27+}
28+2129vi.mock("./bridge/gateway.js", () => ({}));
2230vi.mock("./engine/messaging/outbound.js", () => ({
2331sendText: sendTextMock,
@@ -48,9 +56,9 @@ describe("qqbot message adapter", () => {
4856to: "qqbot:c2c:user-1",
4957text: "hello",
5058});
51-const sent = sendTextMock.mock.calls.at(-1)?.[0] as SentTextParams | undefined;
52-expect(sent?.to).toBe("qqbot:c2c:user-1");
53-expect(sent?.text).toBe("hello");
59+const sent = latestMockArg(sendTextMock, "sendText") as SentTextParams;
60+expect(sent.to).toBe("qqbot:c2c:user-1");
61+expect(sent.text).toBe("hello");
5462expect(result?.receipt.platformMessageIds).toEqual(["qq-text-1"]);
5563},
5664media: async () => {
@@ -60,10 +68,10 @@ describe("qqbot message adapter", () => {
6068text: "image",
6169mediaUrl: "https://example.com/image.png",
6270});
63-const sent = sendMediaMock.mock.calls.at(-1)?.[0] as SentMediaParams | undefined;
64-expect(sent?.to).toBe("qqbot:c2c:user-1");
65-expect(sent?.text).toBe("image");
66-expect(sent?.mediaUrl).toBe("https://example.com/image.png");
71+const sent = latestMockArg(sendMediaMock, "sendMedia") as SentMediaParams;
72+expect(sent.to).toBe("qqbot:c2c:user-1");
73+expect(sent.text).toBe("image");
74+expect(sent.mediaUrl).toBe("https://example.com/image.png");
6775expect(result?.receipt.platformMessageIds).toEqual(["qq-media-1"]);
6876},
6977replyTo: async () => {
@@ -73,10 +81,10 @@ describe("qqbot message adapter", () => {
7381text: "reply",
7482replyToId: "msg-1",
7583});
76-const sent = sendTextMock.mock.calls.at(-1)?.[0] as SentTextParams | undefined;
77-expect(sent?.to).toBe("qqbot:group:group-1");
78-expect(sent?.text).toBe("reply");
79-expect(sent?.replyToId).toBe("msg-1");
84+const sent = latestMockArg(sendTextMock, "sendText") as SentTextParams;
85+expect(sent.to).toBe("qqbot:group:group-1");
86+expect(sent.text).toBe("reply");
87+expect(sent.replyToId).toBe("msg-1");
8088expect(result?.receipt.platformMessageIds).toEqual(["qq-text-1"]);
8189},
8290},
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。