ホームページ > バックエンド開発 > C++ > 効果的な ASP.NET MVC 単体テストのために HttpContext.Current をモックするにはどうすればよいですか?

効果的な ASP.NET MVC 単体テストのために HttpContext.Current をモックするにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-17 03:01:09
オリジナル
322 人が閲覧しました

How Can I Mock HttpContext.Current for Effective ASP.NET MVC Unit Testing?

単体テストで 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート