ASP.NET MVC 단위 테스트에 대한 기본 클래스 초기화에서 HttpContext.Current 모킹 처리
ASP.NET MVC 애플리케이션을 단위 테스트하려면 사용자 요청과 응답을 시뮬레이션하기 위해 모의HttpContext.Current
가 필요한 경우가 많습니다. 테스트 클래스가 초기화 내에서 HttpContext.Current
를 사용하는 기본 클래스에서 상속될 때 일반적인 문제가 발생합니다. 단순히 컨트롤러 자체의 컨텍스트를 조롱하는 것만으로는 충분하지 않습니다.
제공된 예제에서는 HttpContext
및 FakeControllerContext
을 사용하여 컨트롤러에 대한 SetFakeControllerContext
를 조롱하는 방법을 보여줍니다. 그러나 기본 클래스의 Init
메서드가 HttpContext.Current
에 액세스하는 경우 이 문제를 직접 해결해야 합니다. 일관된 모의를 보장하려면 테스트 초기화 내에서 HttpContext.Current
도 모의해야 합니다.
조롱 HttpContext.Current
효과적으로
System.Web.HttpContext
및 IPrincipal
속성을 대체하여 IIdentity
클래스를 효과적으로 모의할 수 있습니다. 다음 코드 조각은 이를 보여줍니다.
<code class="language-csharp">HttpContext.Current = new HttpContext( new HttpRequest("", "http://tempuri.org", ""), new HttpResponse(new StringWriter()) ); // Simulate a logged-in user HttpContext.Current.User = new GenericPrincipal( new GenericIdentity("username"), new string[0] ); // Simulate a logged-out user HttpContext.Current.User = new GenericPrincipal( new GenericIdentity(String.Empty), new string[0] );</code>
기본 클래스의 Init
메서드를 호출하기 전에 테스트의 초기화 메서드 내에서 이 모의 전략을 구현함으로써 HttpContext.Current
가 올바르게 모의되도록 하여 테스트에서 사용자 상호 작용을 정확하게 시뮬레이션하고 필요에 따라 HttpContext
에 액세스할 수 있도록 합니다. . 이 접근 방식은 테스트 실행 중에 컨트롤러와 기본 클래스 모두에서 일관된 동작을 보장합니다.
위 내용은 ASP.NET MVC 단위 테스트의 기본 클래스 초기화에서 HttpContext.Current를 모의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!