Я только начинаю с Moq и модульного тестирования в целом.Я пытаюсь создать простой тест, чтобы убедиться, что моя функция кэширования работает правильно.
Почему следующий тест не пройден?Тест не пройден, потому что хранилище вызывается дважды.Однако я прошел через отладчик и убедился, что второй вызов извлекает данные из кэша и не запрашивает репозиторий.
[TestMethod]
public void Test_Cache()
{
var Service = new Service(_mockRepository.Object, _mockLogger.Object, _mockCacheStorage.Object);
Service.GetAll();
Service.GetAll();
_mockRepository.Verify(r => r.FindAll(), Times.Once());
}
Обновление
Вотпроверенный мною сервисный код работает через отладчик.
public IList<Csa> GetAll()
{
try
{
string cacheKey = "GetAll";
IList<Csa> activeList = _cacheStorage.Get<List<Csa>>(cacheKey);
if (activeList == null)
{
activeList = _Repository.FindAll();
_cacheStorage.Set(cacheKey, activeList);
}
return activeList;
}
catch (Exception exception)
{
_logger.Log(LogType.Error, exception.ToString());
throw;
}
}