문제

... 절대 아무것도?

퍼즐의 어떤 부분이 채워집니다 ASP.NET WebForms 그리고 ASP.NET MVC 각기?

어떻게 든 System.Web.Abstractions를 사용하여 ASP.NET-WEB 애플리케이션 모두에서 사용할 수있는 ASP.NET * BASE-APPLICATION을 만들 수 있습니까?

이 경우 System.Web.Abstractions의 클래스를 ASP.NET WebForms로 어떻게 복고풍에 적합 했습니까?

네임 스페이스에서 새로운 객체를 새로 올릴 수 없으므로 조롱에 사용할 수 없습니다.

업데이트: HTTPContext 및 기타 Build-IT ASP.NET-Objects 테스트의 문제를 알고 있다는 사실에 대해 죄송합니다. 어쨌든 좋은 설명에 감사드립니다.

도움이 되었습니까?

해결책

네임 스페이스에는 ASP.NET의 핵심 클래스 (예 : httpsessionState)를 래핑하도록 설계된 유형이 포함되어 있습니다.

뭐, 왜 그런지 알고 싶어?

이러한 핵심 ASP.NET 클래스 중 다수는 밀봉되거나 정적이므로 코드와 코드 간의 종속성을 깨뜨릴 수 없습니다. 즉, 이러한 핵심 종속성을 조롱 할 수 없으므로 ASP.NET 코드를 테스트하기가 훨씬 어렵습니다. 따라서 Code에서 직접 HTTPresponse를 직접 조작하는 대신 httpresponsewrapper, 테스트 시간 동안 HTTPRPRONSE 객체의 동작 방식을 제어하기 위해 스터브 또는 조롱 할 수 있습니다.

이 포장지를 만들거나 이전에 한두 마리의 포장지를 구현 한 적이 있다면, 그 네임 스페이스에 많은 작업이 마무리되어 있다는 것을 알고있을 것입니다.

다른 팁

실제로 조롱을위한 것입니다. -httpcontext는 밀봉 된 클래스이며 쉽게 조롱 할 수 없습니다. HTTPContextBase는 밀봉되지 않았으며 방법이 가상이라고 생각하여 조롱이 훨씬 쉬워집니다.

HTTPContextBase (예 : WebForms에서 사용하기 위해)의 인스턴스를 포함 할 수는 없지만 다음을 통해 인스턴스를 얻을 수 있습니다.

var ctx = new HttpContextWrapper(HttpContext.Current);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top