Heim >Backend-Entwicklung >C++ >Wie verspotte ich HttpContext in ASP.NET MVC mit Moq?

Wie verspotte ich HttpContext in ASP.NET MVC mit Moq?

DDD
DDDOriginal
2025-01-11 20:37:42252Durchsuche

How to Mock HttpContext in ASP.NET MVC with Moq?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn