Verwenden von Moq zum Verspotten von HttpContext in ASP.NET MVC-Anwendungen
Mocking HttpContext
innerhalb von ASP.NET MVC-Tests mit Moq erfordert einen etwas anderen Ansatz. Da die Eigenschaft HttpContext
Ihres Controllers schreibgeschützt ist, müssen Sie mit der übergeordneten Eigenschaft ControllerContext
arbeiten. Durch das Festlegen von ControllerContext
stellen Sie sicher, dass der simulierte Kontext korrekt an die Initialize
-Methode übergeben wird.
So können Sie Ihre Testmethode ändern:
<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>
Diese Methode umgeht die Lesebeschränkung von HttpContext
und ermöglicht effektives Mocking. Ausführlichere Anleitungen zum Verspotten von HttpContext
und RequestContext
mit Moq finden Sie in der folgenden Ressource:
Das obige ist der detaillierte Inhalt vonWie verspotte ich HttpContext in ASP.NET MVC mit Moq?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!