using VendingMachine.Application.Services;
namespace VendingMachine.Tests;
///
/// 内存版 Redis 存储,用于集成测试
///
public class InMemoryRedisStore : IRedisStore
{
private readonly Dictionary _store = new();
public Task SetAsync(string key, string value, TimeSpan expiry)
{
_store[key] = (value, DateTime.UtcNow.Add(expiry));
return Task.CompletedTask;
}
public Task 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(null);
}
return Task.FromResult(entry.Value);
}
return Task.FromResult(null);
}
public Task DeleteAsync(string key)
{
return Task.FromResult(_store.Remove(key));
}
}