단위 테스트에서 HttpContext.Current 모의
ASP.NET MVC 애플리케이션을 단위 테스트할 때 HttpContext.Current
특성 호출에서 반환된 HttpContext.Current
을 모의해야 합니다. 이 속성은 System.Web.HttpContext
(모의에 사용되는 클래스)을 확장하지 않는 System.Web.HttpContextBase
의 인스턴스를 반환합니다.
HttpContext.Current 및 HttpContextBase
HttpContextBase
의 도입은 HttpContext
이 시뮬레이션하기 어려운 문제를 해결하기 위한 것입니다. 그러나 이 두 클래스 사이에는 아무런 관계가 없으며 HttpContextWrapper
가 둘 사이의 어댑터로 사용됩니다.
공유 액세스를 위한 모의 HttpContext
HttpContext
메서드에서 호출된 라이브러리와 컨트롤러 간에 공유되도록 TestInitialize
을 시뮬레이션하려면 다음 코드를 사용할 수 있습니다.
<code class="language-csharp">HttpContext.Current = new HttpContext( new HttpRequest("", "http://tempuri.org", ""), new HttpResponse(new StringWriter()) );</code>
사용자 주체 설정
로그인한 사용자를 설정하려면 다음 코드를 사용하세요.
<code class="language-csharp">HttpContext.Current.User = new GenericPrincipal( new GenericIdentity("username"), new string[0] );</code>
사용자를 로그인하지 않은 상태로 설정
인증되지 않은 사용자를 가장하려면 다음을 사용하세요.
<code class="language-csharp">HttpContext.Current.User = new GenericPrincipal( new GenericIdentity(String.Empty), new string[0] );</code>
이러한 방식으로 HttpContext.Current
을 수정하면 테스트 설정 전반에 걸쳐 시뮬레이션할 수 있어 컨트롤러와 모든 종속 라이브러리의 일관된 동작을 보장할 수 있습니다.
위 내용은 효과적인 ASP.NET MVC 단위 테스트를 위해 HttpContext.Current를 어떻게 모의할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!