>백엔드 개발 >C++ >ASP.NET MVC 단위 테스트의 기본 클래스 초기화에서 HttpContext.Current를 모의하는 방법은 무엇입니까?

ASP.NET MVC 단위 테스트의 기본 클래스 초기화에서 HttpContext.Current를 모의하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-17 02:56:11334검색

How to Mock HttpContext.Current in Base Class Initialization for ASP.NET MVC Unit Tests?

ASP.NET MVC 단위 테스트에 대한 기본 클래스 초기화에서 HttpContext.Current 모킹 처리

ASP.NET MVC 애플리케이션을 단위 테스트하려면 사용자 요청과 응답을 시뮬레이션하기 위해 모의HttpContext.Current가 필요한 경우가 많습니다. 테스트 클래스가 초기화 내에서 HttpContext.Current를 사용하는 기본 클래스에서 상속될 때 일반적인 문제가 발생합니다. 단순히 컨트롤러 자체의 컨텍스트를 조롱하는 것만으로는 충분하지 않습니다.

제공된 예제에서는 HttpContextFakeControllerContext을 사용하여 컨트롤러에 대한 SetFakeControllerContext를 조롱하는 방법을 보여줍니다. 그러나 기본 클래스의 Init 메서드가 HttpContext.Current에 액세스하는 경우 이 문제를 직접 해결해야 합니다. 일관된 모의를 보장하려면 테스트 초기화 내에서 HttpContext.Current도 모의해야 합니다.

조롱 HttpContext.Current효과적으로

System.Web.HttpContextIPrincipal 속성을 ​​대체하여 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.