У меня есть класс Cache следующим образом:
public class MyCache : ICacheProvider
{
private readonly IMemoryCache _cache;
private readonly MemoryCacheOptions _options;
private readonly ILogger<InMemoryCacheProvider> _logger;
public MyCache(IMemoryCache cache, MemoryCacheOptions options, ILogger<InMemoryCacheProvider> logger)
{
//Elided
}
public virtual void Set<T>(string key, T value, TimeSpan expiration) where T : class
{
_cache.Set(key, value, expiration);
}
public virtual T Get<T>(string key) where T : class
{
if (_cache.Get(key) is T result)
{
return result;
}
return default(T);
}
// removed some code for clarity
}
ICacheProvider имеет такие методы, как Set
и Get
.
Ну, как я могу проверить этот класс? Мне нужно проверить, что метод set на самом деле устанавливает что-то в зависимость. С FakeitEasy я сделал следующее:
[Fact]
public void SetTest()
{
var cache = A.Fake<MyCache>();
var item = A.Fake<TestClass>();
cache.Set("item", item);
A.CallTo(() => cache.Set("item", item)).MustHaveHappened();
}
Но это не имело для меня большого смысла.
Что меня интересует, так это то, что когда я вызываю метод set, мне нужно иметь возможность проверить, действительно ли установлен объект в поддельном кеше или что-то в этом роде. То же самое для Get и других методов.
Не могли бы вы уточнить?