ホームページ > バックエンド開発 > C++ > ASP.NET MVC単体テストの基本クラスの初期化でHttpContext.Currentをモックする方法は?

ASP.NET MVC単体テストの基本クラスの初期化でHttpContext.Currentをモックする方法は?

Susan Sarandon
リリース: 2025-01-17 02:56:11
オリジナル
333 人が閲覧しました

How to Mock HttpContext.Current in Base Class Initialization for ASP.NET MVC Unit Tests?

ASP.NET MVC 単体テストの基本クラス初期化における HttpContext.Current モッキングへの対処

ASP.NET MVC アプリケーションの単体テストでは、ユーザーの要求と応答をシミュレートするために HttpContext.Current のモックが必要になることがよくあります。 一般的な問題は、テストクラスが初期化内で HttpContext.Current を使用する基本クラスから継承するときに発生します。 コントローラー自体のコンテキストをモックするだけでは不十分です。

提供された例は、HttpContextFakeControllerContext を使用してコントローラーの 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 サイトの他の関連記事を参照してください。

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