























@@ -56,6 +56,14 @@ async function registerHandlers() {
5656});
5757}
585859+function firstMockArg(mock: { mock: { calls: Array<readonly unknown[]> } }, label: string) {
60+const call = mock.mock.calls[0];
61+if (!call) {
62+throw new Error(`expected ${label} call`);
63+}
64+return call[0];
65+}
66+5967describe("Feishu bot menu handler", () => {
6068afterAll(() => {
6169vi.doUnmock("./bot.js");
@@ -82,7 +90,7 @@ describe("Feishu bot menu handler", () => {
8290await onBotMenu(createBotMenuEvent({ eventKey: "quick-actions", timestamp: "1700000000000" }));
83918492expect(sendCardFeishuMock).toHaveBeenCalledTimes(1);
85-const sendArgs = sendCardFeishuMock.mock.calls.at(0)?.[0] as
93+const sendArgs = firstMockArg(sendCardFeishuMock, "Feishu card send") as
8694| {
8795accountId?: string;
8896card?: {
@@ -131,7 +139,7 @@ describe("Feishu bot menu handler", () => {
131139await onBotMenu(createBotMenuEvent({ eventKey: "custom-key", timestamp: "1700000000002" }));
132140133141expect(handleFeishuMessageMock).toHaveBeenCalledTimes(1);
134-const handleArgs = handleFeishuMessageMock.mock.calls.at(0)?.[0] as
142+const handleArgs = firstMockArg(handleFeishuMessageMock, "Feishu synthetic message") as
135143| { event?: { message?: { content?: string } } }
136144| undefined;
137145expect(handleArgs?.event?.message?.content).toBe('{"text":"/menu custom-key"}');
@@ -147,7 +155,7 @@ describe("Feishu bot menu handler", () => {
147155await vi.waitFor(() => {
148156expect(handleFeishuMessageMock).toHaveBeenCalledTimes(1);
149157});
150-const handleArgs = handleFeishuMessageMock.mock.calls.at(0)?.[0] as
158+const handleArgs = firstMockArg(handleFeishuMessageMock, "Feishu fallback message") as
151159| { event?: { message?: { content?: string } } }
152160| undefined;
153161expect(handleArgs?.event?.message?.content).toBe('{"text":"/menu quick-actions"}');
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。