ASP.NET テスト初期化メソッドで HttpContext.Current をモックする
ASP.NET では、HttpContext オブジェクトのモックは、コントローラーを分離してテストするための一般的な方法です。ただし、基本テスト クラスが HttpContext.Current にアクセスしようとする外部ライブラリを初期化する状況があります。テスト初期化メソッドで HttpContext が正しくモックされていない場合、エラーが発生します。
初期化メソッドで HttpContext をシミュレートするソリューション
この問題を解決するには、HttpContext.Current とは関係がないため、HttpContextBase をモックする必要はありません。代わりに、HttpContext を直接モックして、それを現在のコンテキストとして設定できます:
<code class="language-csharp">// 在测试初始化方法中 HttpContext.Current = new HttpContext( new HttpRequest("", "http://tempuri.org", ""), new HttpResponse(new StringWriter()) );</code>
その後、ログイン ユーザーになりすますように User プロパティを設定できます。
<code class="language-csharp">// 用户已登录 HttpContext.Current.User = new GenericPrincipal( new GenericIdentity("username"), new string[0] ); // 用户已注销 HttpContext.Current.User = new GenericPrincipal( new GenericIdentity(String.Empty), new string[0] );</code>
このアプローチを使用すると、初期化メソッドとそれにアクセスするライブラリを含むテスト クラス全体で HttpContext.Current が確実にモック化されます。このようにして、HttpContext プロパティに依存するコントローラー アクションをテストしながら、HttpContext へのアクセスを必要とする依存関係を初期化することもできます。
以上がASP.NET テスト初期化メソッドで HttpContext.Current をモックする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。