Verwenden Sie Moq, um HttpContext in ASP.NET MVC zu simulieren
Wenn Sie beim Testen versuchen, HttpContext zu simulieren, kann es zu einer Fehlermeldung kommen, die darauf hinweist, dass die HttpContext-Eigenschaft schreibgeschützt ist. Dieser Artikel bietet eine Lösung für dieses Problem und erklärt, wie man Moq verwendet, um den HttpContext und seine Abhängigkeiten zu verspotten.
Überwindung von Nur-Lese-Problemen
In der HomeController-Klasse ist die HttpContext-Eigenschaft tatsächlich schreibgeschützt. Es ist jedoch möglich, die ControllerContext-Eigenschaft festzulegen, die HttpContext als Untereigenschaft enthält.
<code>controller.ControllerContext = new ControllerContext( context.Object, new RouteData(), controller );</code>
Beispiel
Der folgende Code zeigt, wie ein simulierter HttpContext mithilfe von Moq festgelegt wird:
<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>
Weitere Ressourcen
Weitere Informationen zum Verspotten von RequestContext und HttpContext finden Sie in den folgenden Ressourcen:
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!