由于 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中文网其他相关文章!