> 백엔드 개발 > C++ > 효과적인 ASP.NET MVC 단위 테스트를 위해 HttpContext.Current를 어떻게 모의할 수 있습니까?

효과적인 ASP.NET MVC 단위 테스트를 위해 HttpContext.Current를 어떻게 모의할 수 있습니까?

Barbara Streisand
풀어 주다: 2025-01-17 03:01:09
원래의
321명이 탐색했습니다.

How Can I Mock HttpContext.Current for Effective ASP.NET MVC Unit Testing?

단위 테스트에서 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿