vending-machine/backend/tests/VendingMachine.Tests/InMemoryRedisStore.cs
2026-04-03 06:07:13 +08:00

38 lines
1.0 KiB
C#

using VendingMachine.Application.Services;
namespace VendingMachine.Tests;
/// <summary>
/// 内存版 Redis 存储,用于集成测试
/// </summary>
public class InMemoryRedisStore : IRedisStore
{
private readonly Dictionary<string, (string Value, DateTime? ExpiresAt)> _store = new();
public Task SetAsync(string key, string value, TimeSpan expiry)
{
_store[key] = (value, DateTime.UtcNow.Add(expiry));
return Task.CompletedTask;
}
public Task<string?> GetAsync(string key)
{
if (_store.TryGetValue(key, out var entry))
{
// 检查是否过期
if (entry.ExpiresAt.HasValue && DateTime.UtcNow > entry.ExpiresAt.Value)
{
_store.Remove(key);
return Task.FromResult<string?>(null);
}
return Task.FromResult<string?>(entry.Value);
}
return Task.FromResult<string?>(null);
}
public Task<bool> DeleteAsync(string key)
{
return Task.FromResult(_store.Remove(key));
}
}