HttpContext.Current.Session을 활용하는 단위 테스트 코드
질문:
시도하는 중 웹 서비스를 단위 테스트하기 위해 설정 시 null 참조 예외가 발생합니다. HttpContext.Current.Session 값. SimpleWorkerRequest를 사용하여 컨텍스트를 생성했음에도 불구하고 HttpContext.Current.Session은 null로 유지됩니다. 단위 테스트 내에서 현재 세션을 어떻게 초기화할 수 있나요?
답변:
HttpContext와 해당 세션 개체를 모의하려면 다음 두 가지 접근 방식 중 하나를 사용할 수 있습니다.
사용 반영:
<br>public static HttpContext FakeHttpContext()<br>{<br> var httpRequest = new HttpRequest("", "http://example.com/" , "");<br> var stringWriter = new StringWriter();<br> var httpResponse = new HttpResponse(stringWriter);<br> var httpContext = new HttpContext(httpRequest, httpResponse);</p> <p>var sessionContainer = new HttpSessionStateContainer("id", new SessionStateItemCollection(),</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"> 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;
}
사용 SessionStateUtility:
<br>SessionStateUtility.AddHttpSessionStateToContext(httpContext, sessionContainer);<br>
한 번 모의 HttpContext를 만들었으니 설정할 수 있습니다. 단위 테스트의 현재 컨텍스트로:
<br>HttpContext.Current = MockHelper.FakeHttpContext();<br>
위 내용은 단위 테스트를 위해 HttpContext.Current.Session을 모의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!