在 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中文網其他相關文章!