Moq を使用して ASP.NET MVC で HttpContext をシミュレートします
ASP.NET MVC コントローラーをテストする場合、コードの動作を分離するには HttpContext をモックすることが重要です。この記事では、人気のあるモック フレームワーク Moq を使用してこれを実現する方法を説明します。
テスト メソッドで HttpContext をモックする必要があるとします。
<code>[TestMethod] public void Home_Message_Display_Unknown_User_when_coockie_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(); controller.HttpContext = context.Object; // 此处出错 }</code>
上記のコードでは、controller.HttpContext
は読み取り専用プロパティであるため、設定しようとするとエラーが発生します。ただし、この問題は可変の ControllerContext
属性を使用して解決できます:
<code>controller.ControllerContext = new ControllerContext(context.Object, new RouteData(), controller);</code>
HttpContext は、ControllerContext
属性を設定することで効果的にシミュレートできます。 RequestContext と HttpContext のモックに関する詳細と例については、次のリソースを参照してください:
以上がMoq を使用して ASP.NET MVC 単体テストで HttpContext を効果的にモックする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。