使用Moq模擬ASP.NET MVC中的HttpContext
進行測試時嘗試模擬HttpContext可能會遇到錯誤,提示HttpContext屬性為唯讀。本文將提供解決此問題的方法,並說明如何使用Moq模擬HttpContext及其相依性。
克服只讀問題
在HomeController類別中,HttpContext屬性確實是唯讀的。但是,可以設定ControllerContext屬性,該屬性包含HttpContext作為子屬性。
<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中文網其他相關文章!