Сценарий
Мы разрабатываем новый веб-проект MVC и пытаемся придерживаться шаблона Skinny Controller, как описано в этой статье http://codebetter.com/iancooper/2008/12/03/the-fat-controller/
В рамках одного из наших действий мы получаем некоторые данные навигации (структура меню) из кэша.
Задача
Я приказываю поддерживать шаблон скинового контроллера, для которого мы хотели бы иметь вызов проверки кэша во ViewModel, который мы пробовали и, как мы знаем, работают, используя следующий код.
var cachedCategories = (List<Category>)HttpContext.Current.Cache["Categories"];
if (cachedCategories == null) {
cachedCategories = _service.GetCategories().ToList<Category>();
HttpContext.Current.Cache["Categories"] = cachedCategories;
}
Однако, когда дело доходит до модульного тестирования, мы сталкиваемся с проблемой. Так как мы не напрямую передаем HttpContext в ViewModel, мы не знаем, как насмехаться над HttpContext.
Мы используем Moq, и хотя у нас есть несколько опций (один - передать контекст от контроллера к модели представления при создании экземпляра), эти опции требуют изменения кода исключительно для обеспечения работы тестов.
У кого-нибудь есть предложения?