



























@@ -282,6 +282,20 @@ function expectCallerDispatcherPreserved(callIndexes: number[], dispatcher: unkn
282282}
283283}
284284285+function loggerHasMessageContaining(logger: ReturnType<typeof vi.fn>, fragment: string): boolean {
286+return logger.mock.calls.some(
287+([message]) => typeof message === "string" && message.includes(fragment),
288+);
289+}
290+291+function expectLoggerMessageContaining(logger: ReturnType<typeof vi.fn>, fragment: string): void {
292+expect(loggerHasMessageContaining(logger, fragment)).toBe(true);
293+}
294+295+function expectNoLoggerMessageContaining(logger: ReturnType<typeof vi.fn>, fragment: string): void {
296+expect(loggerHasMessageContaining(logger, fragment)).toBe(false);
297+}
298+285299async function expectNoStickyRetryWithSameDispatcher(params: {
286300resolved: ReturnType<typeof resolveTelegramFetchOrThrow>;
287301expectedAgentCtor: typeof ProxyAgentCtor | typeof EnvHttpProxyAgentCtor;
@@ -765,14 +779,17 @@ describe("resolveTelegramFetch", () => {
765779expectStickyAutoSelectDispatcher(firstDispatcher);
766780expect(secondDispatcher?.options?.connect?.family).toBe(4);
767781expect(secondDispatcher?.options?.connect?.autoSelectFamily).toBe(false);
768-expect(loggerDebug).toHaveBeenCalledWith(
769-expect.stringContaining("fetch fallback: enabling sticky IPv4-only dispatcher"),
782+expectLoggerMessageContaining(
783+loggerDebug,
784+"fetch fallback: enabling sticky IPv4-only dispatcher",
770785);
771-expect(loggerDebug).toHaveBeenCalledWith(
772-expect.stringContaining("fetch fallback: recovered from attempt 1 to attempt 0"),
786+expectLoggerMessageContaining(
787+loggerDebug,
788+"fetch fallback: recovered from attempt 1 to attempt 0",
773789);
774-expect(loggerWarn).not.toHaveBeenCalledWith(
775-expect.stringContaining("fetch fallback: enabling sticky IPv4-only dispatcher"),
790+expectNoLoggerMessageContaining(
791+loggerWarn,
792+"fetch fallback: enabling sticky IPv4-only dispatcher",
776793);
777794});
778795@@ -812,11 +829,10 @@ describe("resolveTelegramFetch", () => {
812829expect(eighthDispatcher).toBe(firstDispatcher);
813830expect(ninthDispatcher).toBe(firstDispatcher);
814831expectPinnedFallbackIpDispatcher(3);
815-expect(loggerWarn).toHaveBeenCalledWith(
816-expect.stringContaining("fetch fallback: DNS-resolved IP unreachable"),
817-);
818-expect(loggerDebug).toHaveBeenCalledWith(
819-expect.stringContaining("fetch fallback: recovered from attempt 2 to attempt 0"),
832+expectLoggerMessageContaining(loggerWarn, "fetch fallback: DNS-resolved IP unreachable");
833+expectLoggerMessageContaining(
834+loggerDebug,
835+"fetch fallback: recovered from attempt 2 to attempt 0",
820836);
821837});
822838@@ -855,9 +871,7 @@ describe("resolveTelegramFetch", () => {
855871expect(getDispatcherFromUndiciCall(7)).toBe(firstDispatcher);
856872expect(getDispatcherFromUndiciCall(8)).toBe(secondDispatcher);
857873expect(getDispatcherFromUndiciCall(9)).toBe(secondDispatcher);
858-expect(loggerDebug).toHaveBeenCalledWith(
859-expect.stringContaining("fetch fallback: re-probing primary dispatcher"),
860-);
874+expectLoggerMessageContaining(loggerDebug, "fetch fallback: re-probing primary dispatcher");
861875});
862876863877it("keeps the armed fallback sticky when all attempts fail", async () => {
@@ -933,12 +947,11 @@ describe("resolveTelegramFetch", () => {
933947expect(getDispatcherFromUndiciCall(7)).toBe(getDispatcherFromUndiciCall(3));
934948expect(getDispatcherFromUndiciCall(8)).toBe(getDispatcherFromUndiciCall(1));
935949expect(getDispatcherFromUndiciCall(9)).toBe(getDispatcherFromUndiciCall(2));
936-expect(loggerWarn).toHaveBeenCalledWith(
937-expect.stringContaining("telegram transport attempt marked temporarily unhealthy"),
938-);
939-expect(loggerDebug).toHaveBeenCalledWith(
940-expect.stringContaining("fetch fallback: re-probing primary dispatcher"),
950+expectLoggerMessageContaining(
951+loggerWarn,
952+"telegram transport attempt marked temporarily unhealthy",
941953);
954+expectLoggerMessageContaining(loggerDebug, "fetch fallback: re-probing primary dispatcher");
942955});
943956944957it("preserves caller-provided dispatcher across fallback retry", async () => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。