diff --git a/tests/JD.AI.Gateway.Tests/QueueDecoratorAndAdminCommandTests.cs b/tests/JD.AI.Gateway.Tests/QueueDecoratorAndAdminCommandTests.cs index 308b92d8..b5da7659 100644 --- a/tests/JD.AI.Gateway.Tests/QueueDecoratorAndAdminCommandTests.cs +++ b/tests/JD.AI.Gateway.Tests/QueueDecoratorAndAdminCommandTests.cs @@ -86,7 +86,16 @@ public async Task MessageReceived_WithMultipleSubscribers_WiresInnerHandlerOnlyO Assert.Equal(1, subscriberOneCalls); Assert.Equal(1, subscriberTwoCalls); + // The drain loop marks the entry completed after the handlers return, so poll + // instead of asserting immediately (avoids a race with the background drain). + var deadline = DateTime.UtcNow.AddSeconds(5); var stats = await buffer.GetStatsAsync(); + while (stats.Completed < 1 && DateTime.UtcNow < deadline) + { + await Task.Delay(20); + stats = await buffer.GetStatsAsync(); + } + Assert.Equal(1, stats.Completed); Assert.Equal(1, stats.Total); }