단위 테스트에서 HttpContext.Current.Session 모의
HttpContext.Current.Session
값에 액세스하는 웹 서비스에 대한 단위 테스트를 작성할 때 세션이 초기화되지 않으면 null 참조 예외가 발생할 수 있습니다. 이 문제를 해결하려면 단위 테스트에 모의 세션을 사용할 수 있습니다.
한 가지 방법은 새로운 HttpSessionStateContainer
을 사용하여 모의 HttpContext
을 만드는 것입니다. 방법은 다음과 같습니다.
<code class="language-csharp">public static HttpContext FakeHttpContext() { var httpRequest = new HttpRequest("", "http://example.com/", ""); var stringWriter = new StringWriter(); var httpResponse = new HttpResponse(stringWriter); var httpContext = new HttpContext(httpRequest, httpResponse); var sessionContainer = new HttpSessionStateContainer("id", new SessionStateItemCollection(), new HttpStaticObjectsCollection(), 10, true, HttpCookieMode.AutoDetect, SessionStateMode.InProc, false); httpContext.Items["AspSession"] = typeof(HttpSessionState).GetConstructor( BindingFlags.NonPublic | BindingFlags.Instance, null, CallingConventions.Standard, new[] { typeof(HttpSessionStateContainer) }, null) .Invoke(new object[] { sessionContainer }); return httpContext; }</code>
또는 Brent M. Spell이 제안한 대로 HttpSessionStateContainer
을 HttpContext
에 직접 추가할 수 있습니다.
<code class="language-csharp">SessionStateUtility.AddHttpSessionStateToContext(httpContext, sessionContainer);</code>
단위 테스트에서 이 모의 세션을 사용하세요.
<code class="language-csharp">HttpContext.Current = MockHelper.FakeHttpContext();</code>
이 접근 방식을 사용하면 Null 참조 예외가 발생하지 않고 단위 테스트 중에 값을 HttpContext.Current.Session
으로 설정할 수 있으므로 웹 서비스의 세션 종속 기능을 철저하게 테스트할 수 있습니다.
위 내용은 HttpContext.Current.Session을 사용하는 웹 서비스 단위 테스트 시 NullReferenceException을 방지하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!