You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

26 lines
901 B

import { describe, expect, it, vi } from "vitest";
vi.mock("@/workers/rpa/worker-state", () => ({
listWorkerHeartbeats: vi.fn(),
}));
import { isAnyRpaWorkerHealthy } from "@/lib/rpa/worker-health";
import { listWorkerHeartbeats } from "@/workers/rpa/worker-state";
describe("isAnyRpaWorkerHealthy", () => {
it("存在近期心跳时返回 true", async () => {
vi.mocked(listWorkerHeartbeats).mockResolvedValue([
{ workerId: "w1", lastSeenMs: Date.now() - 5_000 },
]);
await expect(isAnyRpaWorkerHealthy()).resolves.toBe(true);
});
it("无心跳或 Redis 异常时返回 false", async () => {
vi.mocked(listWorkerHeartbeats).mockResolvedValue([]);
await expect(isAnyRpaWorkerHealthy()).resolves.toBe(false);
vi.mocked(listWorkerHeartbeats).mockRejectedValue(new Error("redis down"));
await expect(isAnyRpaWorkerHealthy()).resolves.toBe(false);
});
});