在 ASP.NET MVC 应用程序中使用 Moq 模拟 HttpContext
使用 Moq 在 ASP.NET MVC 测试中进行 模拟 HttpContext
需要稍微不同的方法。 由于控制器的 HttpContext
属性是只读的,因此您需要使用其父级 ControllerContext
。 通过设置 ControllerContext
,您可以确保模拟上下文正确传递给 Initialize
方法。
以下是修改测试方法的方法:
<code class="language-csharp">[TestMethod] public void Home_Message_Display_Unknown_User_when_cookie_does_not_exist() { var mockHttpContext = new Mock<HttpContextBase>(); var mockHttpRequest = new Mock<HttpRequestBase>(); mockHttpContext .Setup(c => c.Request) .Returns(mockHttpRequest.Object); var controller = new HomeController(); // Set the ControllerContext, not the HttpContext directly controller.ControllerContext = new ControllerContext(mockHttpContext.Object, new RouteData(), controller); // ... rest of your test code }</code>
此方法绕过了HttpContext
的只读限制,并允许有效的模拟。 有关使用 Moq 模拟 HttpContext
和 RequestContext
的更详细指导,请参阅以下资源:
以上是如何使用 Moq 在 ASP.NET MVC 中模拟 HttpContext?的详细内容。更多信息请关注PHP中文网其他相关文章!