ASP.NET MVC 単体テストの基本クラス初期化における HttpContext.Current モッキングへの対処
ASP.NET MVC アプリケーションの単体テストでは、ユーザーの要求と応答をシミュレートするために HttpContext.Current
のモックが必要になることがよくあります。 一般的な問題は、テストクラスが初期化内で HttpContext.Current
を使用する基本クラスから継承するときに発生します。 コントローラー自体のコンテキストをモックするだけでは不十分です。
提供された例は、HttpContext
と FakeControllerContext
を使用してコントローラーの SetFakeControllerContext
をモックする方法を示しています。ただし、基本クラスの Init
メソッドが HttpContext.Current
にアクセスする場合は、これに直接対処する必要があります。 一貫したモックを確保するには、テストの初期化内で HttpContext.Current
もモックする必要があります。
HttpContext.Current
を効果的に嘲笑する
System.Web.HttpContext
プロパティと IPrincipal
プロパティを置き換えることで、IIdentity
クラスを効果的にモックできます。 次のコード スニペットはこれを示しています:
<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>
このモック戦略をテストの初期化メソッド内で実装することにより、基本クラスの Init
メソッドを呼び出す前に、HttpContext.Current
が正しくモックされていることを確認し、テストでユーザー操作を正確にシミュレートし、必要に応じて HttpContext
にアクセスできるようにします。 。 このアプローチにより、テスト実行中にコントローラーと基本クラスの両方で一貫した動作が保証されます。
以上がASP.NET MVC単体テストの基本クラスの初期化でHttpContext.Currentをモックする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。