






















1+import type { RuntimeEnv } from "openclaw/plugin-sdk/runtime-env";
12import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
2334const harness = await import("./bot.create-telegram-bot.test-harness.js");
@@ -197,7 +198,7 @@ describe("createTelegramBot channel_post media", () => {
197198expect(replySpy).not.toHaveBeenCalled();
198199await flushChannelPostMediaGroup(setTimeoutSpy);
199200200-expect(replySpy).toHaveBeenCalledTimes(1);
201+await vi.waitFor(() => expect(replySpy).toHaveBeenCalledTimes(1));
201202const payload = replyPayload() as { Body?: string };
202203expect(payload.Body).toContain("album caption");
203204} finally {
@@ -235,7 +236,7 @@ describe("createTelegramBot channel_post media", () => {
235236expect(replySpy).not.toHaveBeenCalled();
236237await flushChannelPostMediaGroupForDelay(setTimeoutSpy, 75);
237238238-expect(replySpy).toHaveBeenCalledTimes(1);
239+await vi.waitFor(() => expect(replySpy).toHaveBeenCalledTimes(1));
239240const payload = replyPayload() as { Body?: string };
240241expect(payload.Body).toContain("configured album");
241242} finally {
@@ -282,7 +283,7 @@ describe("createTelegramBot channel_post media", () => {
282283TELEGRAM_TEST_TIMINGS.textFragmentGapMs,
283284);
284285285-expect(replySpy).toHaveBeenCalledTimes(1);
286+await vi.waitFor(() => expect(replySpy).toHaveBeenCalledTimes(1));
286287const payload = replyPayload() as { RawBody?: string };
287288expect(payload.RawBody).toContain(part1.slice(0, 32));
288289expect(payload.RawBody).toContain(part2.slice(0, 32));
@@ -569,7 +570,7 @@ describe("createTelegramBot channel_post media", () => {
569570expect(replySpy).not.toHaveBeenCalled();
570571await flushChannelPostMediaGroup(setTimeoutSpy);
571572572-expect(replySpy).toHaveBeenCalledTimes(1);
573+await vi.waitFor(() => expect(replySpy).toHaveBeenCalledTimes(1));
573574const payload = replyPayload() as { Body?: string };
574575expect(payload.Body).toContain("partial album");
575576} finally {
@@ -582,11 +583,17 @@ describe("createTelegramBot channel_post media", () => {
582583replySpy.mockReset();
583584setOpenChannelPostConfig();
584585585-const fetchSpy = createImageFetchSpy();
586-586+const runtimeError = vi.fn();
587587const setTimeoutSpy = vi.spyOn(globalThis, "setTimeout");
588588try {
589-const handler = getChannelPostHandler();
589+createTelegramBot({
590+token: "tok",
591+testTimings: TELEGRAM_TEST_TIMINGS,
592+runtime: { error: runtimeError } as unknown as RuntimeEnv,
593+});
594+const handler = getOnHandler("channel_post") as (
595+ctx: Record<string, unknown>,
596+) => Promise<void>;
590597await queueChannelPostAlbum(handler, {
591598caption: "fatal album",
592599mediaGroupId: "fatal-album-1",
@@ -597,10 +604,14 @@ describe("createTelegramBot channel_post media", () => {
597604expect(replySpy).not.toHaveBeenCalled();
598605await flushChannelPostMediaGroup(setTimeoutSpy);
599606607+await vi.waitFor(() =>
608+expect(runtimeError).toHaveBeenCalledWith(
609+expect.stringContaining("media group handler failed"),
610+),
611+);
600612expect(replySpy).not.toHaveBeenCalled();
601613} finally {
602614setTimeoutSpy.mockRestore();
603-fetchSpy.mockRestore();
604615}
605616});
606617});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。