build-flow.api/tests/BuildFlow.Rag.Tests/Stub/StubChatMessageCache.cs
xiangning f550074fcc test(platform): 添加平台模块测试基础设施和RAG端到端测试
- 为平台测试添加EntityFrameworkCore和Xunit引用
- 实现PlatformTestDb创建带审计字段自动填充的测试数据库
- 添加DictionaryConfiguration支持配置值获取测试
- 实现完整的密码强度验证规则
- 添加RAG问答全链路端到端测试
- 创建多个Stub服务用于解耦外部依赖测试
- 实现测试专用的当前用户上下文
2026-07-07 17:31:50 +08:00

45 lines
1.4 KiB
C#

using BuildFlow.Domain.Interfaces;
namespace BuildFlow.Rag.Tests.Stub;
/// <summary>
/// Stub IChatMessageCache:内存字典模拟 Redis cache,验证双写一致性。
/// </summary>
public sealed class StubChatMessageCache : IChatMessageCache
{
private readonly Dictionary<Guid, List<CachedChatMessage>> _store = new();
public Task<List<CachedChatMessage>?> GetMessagesAsync(Guid conversationId, CancellationToken ct = default)
{
_store.TryGetValue(conversationId, out var list);
return Task.FromResult(list);
}
public Task SetMessagesAsync(Guid conversationId, List<CachedChatMessage> messages, CancellationToken ct = default)
{
_store[conversationId] = messages.ToList();
return Task.CompletedTask;
}
public Task AppendMessageAsync(Guid conversationId, CachedChatMessage message, CancellationToken ct = default)
{
if (!_store.TryGetValue(conversationId, out var list))
{
list = [];
_store[conversationId] = list;
}
list.Add(message);
return Task.CompletedTask;
}
public Task RemoveAsync(Guid conversationId, CancellationToken ct = default)
{
_store.Remove(conversationId);
return Task.CompletedTask;
}
/// <summary>测试辅助:获取某会话缓存消息数。</summary>
public int Count(Guid conversationId)
=> _store.TryGetValue(conversationId, out var list) ? list.Count : 0;
}