単体テストで HttpContext.Current をモックする
ASP.NET MVC アプリケーションの単体テストを行う場合は、HttpContext.Current
属性呼び出しによって返される HttpContext.Current
をモックする必要があります。このプロパティは、System.Web.HttpContext
(モックに使用されるクラス) を拡張しない System.Web.HttpContextBase
のインスタンスを返します。
HttpContext.Current および HttpContextBase
HttpContextBase
の導入は、HttpContext
のシミュレーションが難しい問題を解決することです。ただし、これら 2 つのクラスの間には関係がなく、HttpContextWrapper
はそれらの間のアダプターとして使用されます。
共有アクセス用に HttpContext をモックする
コントローラーと HttpContext
メソッドで呼び出されるライブラリ間で共有されるように TestInitialize
をシミュレートするには、次のコードを使用できます。
<code class="language-csharp">HttpContext.Current = new HttpContext( new HttpRequest("", "http://tempuri.org", ""), new HttpResponse(new StringWriter()) );</code>
ユーザープリンシパルを設定します
ログイン ユーザーを設定するには、次のコードを使用します:
<code class="language-csharp">HttpContext.Current.User = new GenericPrincipal( new GenericIdentity("username"), new string[0] );</code>
ユーザーをログインしていないものとして設定します
認証されていないユーザーになりすますには、次を使用します:
<code class="language-csharp">HttpContext.Current.User = new GenericPrincipal( new GenericIdentity(String.Empty), new string[0] );</code>
を変更すると、テスト設定全体でシミュレートでき、コントローラーと依存ライブラリの一貫した動作が保証されます。 HttpContext.Current
以上が効果的な ASP.NET MVC 単体テストのために HttpContext.Current をモックするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。