ASP.NET MVC 単体テストでの HttpContext.Current モッキングをマスターする
ASP.NET MVC で効果的な単体テストを行うには、コントローラーとライブラリの動作を分離する必要があり、HttpContext
オブジェクトの正確なシミュレーションが必要です。 この記事では、テスト初期化メソッド内で HttpContext.Current
をモックするという課題に取り組みます。
FakeControllerContext
のようなヘルパー クラスを使用するなどの従来の方法では、コントローラーのモック HttpContext
をセットアップします。 ただし、このアプローチは多くの場合不十分で、外部ライブラリも Init
にアクセスする可能性がある HttpContext.Current
メソッドまでモックの範囲を拡張できません。
最適解は HttpContext.Current
を直接操作し、IPrincipal
と IIdentity
オブジェクトを置き換えます。これにより、コンソール アプリケーション内であっても、コントローラーと Init
メソッド中に呼び出されるライブラリ全体で一貫したモックが保証されます。 次のコード スニペットはこれを示しています:
<code class="language-csharp">HttpContext.Current = new HttpContext( new HttpRequest("", "http://tempuri.org", ""), new HttpResponse(new StringWriter()) ); // Simulate a logged-in user HttpContext.Current.User = new GenericPrincipal( new GenericIdentity("username"), new string[0] ); // Simulate a logged-out user HttpContext.Current.User = new GenericPrincipal( new GenericIdentity(String.Empty), new string[0] );</code>
この直接操作により、テスト環境を包括的に制御でき、HttpContext
.
以上がASP.NET MVC単体テストでHttpContext.Currentを効果的にモックする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。