


























@@ -67,10 +67,28 @@ describe("createTypingCallbacks", () => {
6767});
68686969await callbacks.onReplyStart();
70+await flushMicrotasks();
70717172expect(onStartError).toHaveBeenCalledTimes(1);
7273});
737475+it("does not block reply start on a pending typing request", async () => {
76+let resolveStart!: () => void;
77+const { start, callbacks } = createTypingHarness({
78+start: vi.fn(
79+() =>
80+new Promise<void>((resolve) => {
81+resolveStart = resolve;
82+}),
83+),
84+});
85+86+await callbacks.onReplyStart();
87+88+expect(start).toHaveBeenCalledTimes(1);
89+resolveStart();
90+});
91+7492it("invokes stop on idle and reports stop errors", async () => {
7593const { stop, onStopError, callbacks } = createTypingHarness({
7694stop: vi.fn().mockRejectedValue(new Error("stop")),
@@ -113,6 +131,7 @@ describe("createTypingCallbacks", () => {
113131start: vi.fn().mockRejectedValue(new Error("gone")),
114132});
115133await callbacks.onReplyStart();
134+await flushMicrotasks();
116135expect(start).toHaveBeenCalledTimes(1);
117136expect(onStartError).toHaveBeenCalledTimes(1);
118137@@ -133,6 +152,7 @@ describe("createTypingCallbacks", () => {
133152});
134153135154await callbacks.onReplyStart();
155+await flushMicrotasks();
136156expect(start).toHaveBeenCalledTimes(1);
137157138158await vi.advanceTimersByTimeAsync(9_000);
@@ -154,6 +174,7 @@ describe("createTypingCallbacks", () => {
154174maxConsecutiveFailures: 2,
155175});
156176await callbacks.onReplyStart(); // fail
177+await flushMicrotasks();
157178await vi.advanceTimersByTimeAsync(3_000); // success
158179await vi.advanceTimersByTimeAsync(3_000); // fail
159180await vi.advanceTimersByTimeAsync(3_000); // success
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。