2011-01-04 3 views
3

라이프 스타일이 "PerWebRequest"인 형식에 대한 종속성이있는 컨트롤러에 대한 단위 테스트를 작성하려고합니다.PerWebRequest LifeStyle 종속성이있는 단위 테스트 컨트롤러

성은 다음과 같은 예외가 발생 :

System.InvalidOperationException : HttpContext.Current가 null. PerWebRequestLifestyle은 ASP.Net에서만 사용할 수 있습니다.

어떻게하면 HttpContext.Current 속성을 모의 공격 할 수 있습니까?

MVCContrib의 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를 사용하지 않아도되고, 컨트롤러에 대한 의존성이 없기 때문에 HTTPContext를 설명 할 필요가 없다면, 여러분의 경우에는 추상화되지 않았다는 것을 의미합니다. –