由於 HttpContextBase 繼承自 ControllerContext,而 HttpContext 則繼承自基底類別函式庫,因此在 Init 方法中模擬 HttpContext.Current 會遇到繼承衝突的問題。
使用 HttpContext 的替代方法
幸運的是,我們可以直接模擬 HttpContext,這足以操作 IPrincipal (User) 和 IIdentity:
<code class="language-csharp">HttpContext.Current = new HttpContext( new HttpRequest("", "http://tempuri.org", ""), new HttpResponse(new StringWriter()) ); // 用户已登录 HttpContext.Current.User = new GenericPrincipal( new GenericIdentity("username"), new string[0] ); // 用户已注销 HttpContext.Current.User = new GenericPrincipal( new GenericIdentity(String.Empty), new string[0] );</code>
此程式碼確保在您的控制器和 Init 方法中呼叫的任何程式庫中都模擬了 HttpContext。
以上是如何在測試 Init 方法中模擬 HttpContext.Current?的詳細內容。更多資訊請關注PHP中文網其他相關文章!