Moq を使用して ASP.NET MVC で HttpContext をシミュレートします
テスト時に HttpContext をシミュレートしようとすると、HttpContext プロパティが読み取り専用であることを示すエラーが発生する場合があります。この記事では、この問題の解決策を提供し、Moq を使用して HttpContext とその依存関係をモックする方法を説明します。
読み取り専用の問題を解決する
HomeController クラスでは、HttpContext プロパティは確かに読み取り専用です。ただし、HttpContext をサブプロパティとして含む ControllerContext プロパティを設定することは可能です。
<code>controller.ControllerContext = new ControllerContext( context.Object, new RouteData(), controller );</code>
例
次のコードは、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.ControllerContext = new ControllerContext( context.Object, new RouteData(), controller ); ... }</httprequestbase></httpcontextbase></code>
その他のリソース
RequestContext と HttpContext のモックの詳細については、次のリソースを参照してください:
以上がMoq を使用して ASP.NET MVC で HttpContext をモックする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。