build-flow.api/tests/BuildFlow.Rag.Tests/Chat/RedisChatMessageCacheFixture.cs
2026-07-24 09:58:24 +08:00

34 lines
1.1 KiB
C#

using StackExchange.Redis;
using Xunit;
namespace BuildFlow.Rag.Tests.Chat;
/// <summary>管理连接到本地独立基础设施 Redis 的测试连接。</summary>
public sealed class RedisChatMessageCacheFixture : IAsyncLifetime
{
private const string DefaultConnection = "127.0.0.1:56379,abortConnect=false";
/// <summary>测试复用的 Redis 连接。</summary>
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;
}
/// <summary>删除单个测试会话的固定缓存 key。</summary>
public Task DeleteAsync(Guid conversationId)
=> Redis.GetDatabase().KeyDeleteAsync(Key(conversationId));
/// <summary>返回生产缓存使用的固定 key。</summary>
public static string Key(Guid conversationId) => $"chat:messages:{conversationId}";
}