首頁 > 後端開發 > C++ > 如何在 ASP.NET MVC 單元測試的基底類別初始化中模擬 HttpContext.Current?

如何在 ASP.NET MVC 單元測試的基底類別初始化中模擬 HttpContext.Current?

Susan Sarandon
發布: 2025-01-17 02:56:11
原創
329 人瀏覽過

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中文網其他相關文章!

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