HttpContextBase は ControllerContext から継承し、HttpContext は基本クラス ライブラリから継承するため、Init メソッドで HttpContext.Current をモックすると、継承の競合が発生します。
HttpContext を使用した代替手段
幸いなことに、HttpContext を直接モックすることができます。IPrincipal (ユーザー) と 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 中国語 Web サイトの他の関連記事を参照してください。