2011-01-04 2 views
3

Я пытаюсь написать единичный тест для контроллера, который имеет зависимость от типа, образ жизни которого «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); 

ответ

7

You're doing it wrong

Аннотация зависимость и не использовать контейнер в тестах.

+1

Зависимость абстрагируется. Зависимости контроллера разрешаются путем инъекции. Вопрос заключается в том, как издеваться над HTTPContext не как писать модульные тесты. – Nick

+0

Зависимость явно не абстрагируется (достаточно). Если бы вам не понадобилось использовать HTTPContext в вашем тесте, потому что у контроллера не было бы никакой жесткой зависимости от него, и как вы его описываете, это происходит в вашем случае, то есть это не абстрагируется. –

Смежные вопросы