Как вы можете издеваться над сервисом кэширования, которая, в свою очередь, использует Hybridcache? ⇐ C#

Место общения программистов C#
Anonymous
Как вы можете издеваться над сервисом кэширования, которая, в свою очередь, использует Hybridcache?

Сообщение Anonymous »

У меня есть фабричный класс, который скажем, ради аргументов возвращает автомобиль: < /p>

Код: Выделить всё

public class CarFactory : ICarFactory
{
private const string carKey = "MyCarKey";

private readonly ICarDetailsRepository _carRepo;
private readonly ICachingService _cachingService;

public CarFactory(ICarDetailsRepository carRepo, ICachingService cachingService)
{
_carRepo = carRepo;
_cachingService = cachingService;
}

public async Task GetCarDetailsAsync(Guid carId)
{
return await _cachingService.GetOrCreateAsync(carId, carKey, async cancel =>
{
return await GetCarDetailsByCarIdAsync(carId, cancel);
});
}

private async Task GetCarDetailsByCarIdAsync(Guid carId, CancellationToken token)
{
return await _carRepo.GetCarDetailsAsync(carId, token);
}
}
На этой фабрике используется CachingService , который, в свою очередь, является простой оберткой, а не HybridCache, с одним небольшим настройкой в ​​том, что Carid и Carkey объединяются вместе, чтобы фактически сформировать ключ кеша. Я хотел бы знать, как я могу это проверить это? Я специально хочу проверить, что _carrepo.getCardetailSasync (carid) вызывается, когда кэш в настоящее время не имеет кэшированного значения. Я смог создать тест, который проверяет значения, что ожидается, издевавшись от _cachingservice.getorcreateasync () , чтобы вернуть картисты , но не уверен, как ее издеваться, чтобы он затем вызовал фанк.

Код: Выделить всё

public async Task GetOrCreateAsync(Guid id, string key, Func funcToGetItem)
{
return await _hybridCache.GetOrCreateAsync(CreateKeyWithPrefix(id, key), funcToGetItem);
}
< /code>
Пока я попробовал следующее: < /p>
_cachingServiceMock
.Setup(csm => csm.GetOrCreateAsync(carId, It.IsAny(), It.IsAny()))
.Callback(async (id, key, func) => await func.Invoke(default));
Тем не менее, это жалуется, что фанк возвращает NULL, хотя я издевался над _carrepo.getCardetailSasync вызов, чтобы что -то вернуть.

Подробнее здесь: https://stackoverflow.com/questions/796 ... ybridcache

Вернуться в «C#»