使用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中文网其他相关文章!