



























@@ -62,6 +62,22 @@ function enqueueBlockedMainTask<T = void>(
6262return { task, release: deferred.resolve };
6363}
646465+function expectLaneSnapshotFields(
66+lane: string,
67+fields: Partial<ReturnType<CommandQueueModule["getCommandLaneSnapshot"]>>,
68+): void {
69+const snapshot = getCommandLaneSnapshot(lane);
70+for (const [key, value] of Object.entries(fields)) {
71+expect(snapshot[key as keyof typeof snapshot]).toBe(value);
72+}
73+}
74+75+function diagnosticDebugMessages(): string[] {
76+return diagnosticMocks.diag.debug.mock.calls
77+.map(([message]) => message)
78+.filter((message): message is string => typeof message === "string");
79+}
80+6581describe("command queue", () => {
6682beforeAll(async () => {
6783({
@@ -184,9 +200,11 @@ describe("command queue", () => {
184200).rejects.toBe(error);
185201186202expect(diagnosticMocks.diag.error).not.toHaveBeenCalled();
187-expect(diagnosticMocks.diag.debug).toHaveBeenCalledWith(
188-expect.stringContaining("lane task interrupted: lane=nested"),
189-);
203+expect(
204+diagnosticDebugMessages().some((message) =>
205+message.includes("lane task interrupted: lane=nested"),
206+),
207+).toBe(true);
190208});
191209192210it("getActiveTaskCount returns count of currently executing tasks", async () => {
@@ -342,7 +360,7 @@ describe("command queue", () => {
342360});
343361344362expect(secondRan).toBe(false);
345-expect(getCommandLaneSnapshot(lane)).toMatchObject({
363+expectLaneSnapshotFields(lane, {
346364activeCount: 1,
347365queuedCount: 1,
348366});
@@ -352,7 +370,7 @@ describe("command queue", () => {
352370await firstRejected;
353371await expect(second).resolves.toBe("second");
354372expect(secondRan).toBe(true);
355-expect(getCommandLaneSnapshot(lane)).toMatchObject({
373+expectLaneSnapshotFields(lane, {
356374activeCount: 0,
357375queuedCount: 0,
358376});
@@ -373,7 +391,7 @@ describe("command queue", () => {
373391374392await Promise.resolve();
375393expect(ran).toBe(false);
376-expect(getCommandLaneSnapshot(lane)).toMatchObject({
394+expectLaneSnapshotFields(lane, {
377395activeCount: 0,
378396queuedCount: 1,
379397maxConcurrent: 0,
@@ -383,7 +401,7 @@ describe("command queue", () => {
383401384402await expect(task).resolves.toBe("resumed");
385403expect(ran).toBe(true);
386-expect(getCommandLaneSnapshot(lane)).toMatchObject({
404+expectLaneSnapshotFields(lane, {
387405activeCount: 0,
388406queuedCount: 0,
389407maxConcurrent: 1,
@@ -401,7 +419,7 @@ describe("command queue", () => {
401419});
402420const second = enqueueCommandInLane(lane, async () => "second");
403421404-expect(getCommandLaneSnapshot(lane)).toMatchObject({
422+expectLaneSnapshotFields(lane, {
405423 lane,
406424activeCount: 1,
407425queuedCount: 1,
@@ -436,10 +454,12 @@ describe("command queue", () => {
436454(snapshot) => snapshot.lane === alphaLane || snapshot.lane === betaLane,
437455);
438456expect(snapshots.map((snapshot) => snapshot.lane)).toEqual([alphaLane, betaLane]);
439-expect(snapshots).toEqual([
440-expect.objectContaining({ lane: alphaLane, activeCount: 1, queuedCount: 0 }),
441-expect.objectContaining({ lane: betaLane, activeCount: 1, queuedCount: 0 }),
442-]);
457+expect(snapshots[0]?.lane).toBe(alphaLane);
458+expect(snapshots[0]?.activeCount).toBe(1);
459+expect(snapshots[0]?.queuedCount).toBe(0);
460+expect(snapshots[1]?.lane).toBe(betaLane);
461+expect(snapshots[1]?.activeCount).toBe(1);
462+expect(snapshots[1]?.queuedCount).toBe(0);
443463444464alphaBlocker.resolve();
445465betaBlocker.resolve();
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。