Heim > Backend-Entwicklung > C++ > Wie kann man HttpContext in ASP.NET MVC Unit Tests mit Moq richtig verspotten?

Wie kann man HttpContext in ASP.NET MVC Unit Tests mit Moq richtig verspotten?

Linda Hamilton
Freigeben: 2025-01-11 20:46:15
Original
287 Leute haben es durchsucht

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

HttpContext in ASP.NET MVC Unit Tests mit Moq verspotten

Unit-Tests von ASP.NET MVC-Controllern erfordern oft Mocking HttpContext, um Ihren Code von Webserverabhängigkeiten zu isolieren. Moq, ein leistungsstarkes Mocking-Framework, bietet eine robuste Lösung zur Simulation von HttpContext und seinen Eigenschaften.

Die Herausforderung:

Direktes Spotten HttpContext mit Moq stellt eine häufige Gefahr dar:

<code class="language-csharp">[TestMethod]
public void Home_Message_Display_Unknown_User_when_cookie_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();

    // Error: HttpContext is read-only.
    controller.HttpContext = context.Object; 
    ...
}</code>
Nach dem Login kopieren

Der Versuch, ein simuliertes HttpContext direkt der HttpContext-Eigenschaft des Controllers zuzuweisen, schlägt fehl, da es schreibgeschützt ist.

Die Lösung:

Der richtige Ansatz besteht darin, stattdessen die Eigenschaft ControllerContext festzulegen. ControllerContext erbt von HttpContext und stellt den erforderlichen Zugriffspunkt bereit:

<code class="language-csharp">controller.ControllerContext = new ControllerContext(context.Object, new RouteData(), controller);</code>
Nach dem Login kopieren

Weiterführende Literatur:

Ausführlichere Informationen zum Spotten HttpContext und RequestContext mit Moq finden Sie in diesen Ressourcen:

Das obige ist der detaillierte Inhalt vonWie kann man HttpContext in ASP.NET MVC Unit Tests mit Moq richtig verspotten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage