首頁 > 後端開發 > C++ > 如何模擬 HttpContext.Current.Session 進行單元測試?

如何模擬 HttpContext.Current.Session 進行單元測試?

Patricia Arquette
發布: 2025-01-09 06:36:50
原創
646 人瀏覽過

How to Mock HttpContext.Current.Session for Unit Testing?

利用HttpContext.Current.Session 的單元測試程式碼

問題:

問題:

問題:

  1. 問題:

    問為了對Web服務進行單元測試,我在設定時遇到空引用異常HttpContext.Current.Session 值。儘管使用 SimpleWorkerRequest 建立上下文,HttpContext.Current.Session 仍然為空。如何在單元測試中初始化目前會話?



    答案:


    要模擬 HttpContext 及其會話對象,您可以採用以下兩種方法之一:

                                         new HttpStaticObjectsCollection(), 10, true,
                                         HttpCookieMode.AutoDetect,
                                         SessionStateMode.InProc, false);
    
    登入後複製
    使用反射:

                             BindingFlags.NonPublic | BindingFlags.Instance,
                             null, CallingConventions.Standard,
                             new[] { typeof(HttpSessionStateContainer) },
                             null)
                     .Invoke(new object[] { sessionContainer });
    
    登入後複製
    <p>public static HttpContext FakeHttpContext()<g> var stringWriter = new StringWriter();<br> var httpResponse = new HttpResponse(stringWriter);</g></p> var httpContext = new HttpContext(httpRequest, httpResponse); = new HttpSessionStateContainer("id", new SessionStateItemCollection(),
    登入後複製
  2. httpContext .Items["AspSession"] = typeof(HttpSessionState).GetConstructor(}



  3. 使用SessionStateUtility:

<p></p><p httpcontext sessioncontainer> <br></p>一旦你有創建了模擬HttpContext,您可以將其設定為您的單元的當前上下文測試: <pre class="brush:php;toolbar:false">HttpContext.Current = MockHelper.FakeHttpContext();
登入後複製

以上是如何模擬 HttpContext.Current.Session 進行單元測試?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板