- 为平台测试添加EntityFrameworkCore和Xunit引用 - 实现PlatformTestDb创建带审计字段自动填充的测试数据库 - 添加DictionaryConfiguration支持配置值获取测试 - 实现完整的密码强度验证规则 - 添加RAG问答全链路端到端测试 - 创建多个Stub服务用于解耦外部依赖测试 - 实现测试专用的当前用户上下文
45 lines
1.4 KiB
C#
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;
|
|
}
|