Я пытаюсь написать единичный тест для контроллера, который имеет зависимость от типа, образ жизни которого «PerWebRequest».Контроллер модуля тестирования с PerWebRequest LifeStyle зависимость
замок бросает следующее исключение:
System.InvalidOperationException: HttpContext.Current равна нулю. PerWebRequestLifestyle может использоваться только в ASP.Net.
Могу ли я высмеивать свойство HttpContext.Current, чтобы обойти это?
Я попытался использовать MVContrib TestControllerBuilder для инициализации этого контроллера, но он не имеет никакого эффекта.
SymptomTopicController controller = new SymptomTopicController();
controller.WorkOrderFulfillment = workOrderFulfillment;
TestControllerBuilder controllerBuilder = new TestControllerBuilder();
controllerBuilder.InitializeController(controller);
Зависимость абстрагируется. Зависимости контроллера разрешаются путем инъекции. Вопрос заключается в том, как издеваться над HTTPContext не как писать модульные тесты. – Nick
Зависимость явно не абстрагируется (достаточно). Если бы вам не понадобилось использовать HTTPContext в вашем тесте, потому что у контроллера не было бы никакой жесткой зависимости от него, и как вы его описываете, это происходит в вашем случае, то есть это не абстрагируется. –