単体テストで 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
をシミュレートするには、次のコードを使用できます。
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] );
を変更すると、テスト設定全体でシミュレートでき、コントローラーと依存ライブラリの一貫した動作が保証されます。 HttpContext.Current
以上が効果的な ASP.NET MVC 単体テストのために HttpContext.Current をモックするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。