using StackExchange.Redis; using Xunit; namespace BuildFlow.Rag.Tests.Chat; /// 管理连接到本地独立基础设施 Redis 的测试连接。 public sealed class RedisChatMessageCacheFixture : IAsyncLifetime { private const string DefaultConnection = "127.0.0.1:56379,abortConnect=false"; /// 测试复用的 Redis 连接。 public IConnectionMultiplexer Redis { get; private set; } = default!; public async Task InitializeAsync() { var connection = Environment.GetEnvironmentVariable("BUILDFLOW_RAG_REDIS_TEST_CONNECTION") ?? DefaultConnection; Redis = await ConnectionMultiplexer.ConnectAsync(connection); } public Task DisposeAsync() { Redis.Dispose(); return Task.CompletedTask; } /// 删除单个测试会话的固定缓存 key。 public Task DeleteAsync(Guid conversationId) => Redis.GetDatabase().KeyDeleteAsync(Key(conversationId)); /// 返回生产缓存使用的固定 key。 public static string Key(Guid conversationId) => $"chat:messages:{conversationId}"; }