ホームページ >バックエンド開発 >C++ >Moq を使用して ASP.NET MVC 単体テストで HttpContext を適切にモックする方法

Moq を使用して ASP.NET MVC 単体テストで HttpContext を適切にモックする方法

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-11 20:46:15292ブラウズ

How to Properly Mock HttpContext in ASP.NET MVC Unit Tests with Moq?

Moq を使用した ASP.NET MVC 単体テストでの HttpContext のモック

ASP.NET MVC コントローラーの単体テストでは、コードを Web サーバーの依存関係から分離するために HttpContext のモックが必要になることがよくあります。 強力なモック フレームワークである Moq は、HttpContext とそのプロパティをシミュレートするための堅牢なソリューションを提供します。

課題:

Moq を使用して HttpContext を直接モックすると、よくある落とし穴が発生します:

<code class="language-csharp">[TestMethod]
public void Home_Message_Display_Unknown_User_when_cookie_does_not_exist()
{
    var context = new Mock<HttpContextBase>();
    var request = new Mock<HttpRequestBase>();
    context
        .Setup(c => c.Request)
        .Returns(request.Object);
    HomeController controller = new HomeController();

    // Error: HttpContext is read-only.
    controller.HttpContext = context.Object; 
    ...
}</code>

モック化された HttpContext をコントローラーの HttpContext プロパティに直接割り当てようとすると、読み取り専用であるため失敗します。

解決策:

正しいアプローチには、代わりに ControllerContext プロパティを設定することが含まれます。 ControllerContextHttpContext から継承し、必要なアクセス ポイントを提供します:

<code class="language-csharp">controller.ControllerContext = new ControllerContext(context.Object, new RouteData(), controller);</code>

さらに読む:

Moq を使用した HttpContextRequestContext のモックの詳細については、次のリソースを参照してください。

以上がMoq を使用して ASP.NET MVC 単体テストで HttpContext を適切にモックする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。