Heim > Backend-Entwicklung > C++ > Wie kann ich HttpContext.Current für effektive ASP.NET MVC-Einheitentests verspotten?

Wie kann ich HttpContext.Current für effektive ASP.NET MVC-Einheitentests verspotten?

Barbara Streisand
Freigeben: 2025-01-17 03:01:09
Original
322 Leute haben es durchsucht

How Can I Mock HttpContext.Current for Effective ASP.NET MVC Unit Testing?

Mock HttpContext.Current in Unit-Tests

Beim Komponententest einer ASP.NET MVC-Anwendung müssen Sie das vom HttpContext.Current-Attributaufruf zurückgegebene HttpContext.Current verspotten. Diese Eigenschaft gibt eine Instanz von System.Web.HttpContext zurück, die System.Web.HttpContextBase (die zum Verspotten verwendete Klasse) nicht erweitert.

HttpContext.Current und HttpContextBase

Die Einführung von HttpContextBase soll das Problem lösen, das HttpContext schwer zu simulieren ist. Es besteht jedoch keine Beziehung zwischen diesen beiden Klassen, HttpContextWrapper wird als Adapter zwischen ihnen verwendet.

Mock HttpContext für gemeinsamen Zugriff

Um HttpContext so zu simulieren, dass es zwischen dem Controller und jeder in der TestInitialize-Methode aufgerufenen Bibliothek gemeinsam genutzt wird, können Sie den folgenden Code verwenden:

<code class="language-csharp">HttpContext.Current = new HttpContext(
    new HttpRequest("", "http://tempuri.org", ""),
    new HttpResponse(new StringWriter())
    );</code>
Nach dem Login kopieren

Benutzerprinzipal festlegen

Um einen angemeldeten Benutzer einzurichten, verwenden Sie den folgenden Code:

<code class="language-csharp">HttpContext.Current.User = new GenericPrincipal(
    new GenericIdentity("username"),
    new string[0]
    );</code>
Nach dem Login kopieren

Benutzer als nicht angemeldet festlegen

Um sich als nicht authentifizierter Benutzer auszugeben, verwenden Sie:

<code class="language-csharp">HttpContext.Current.User = new GenericPrincipal(
    new GenericIdentity(String.Empty),
    new string[0]
    );</code>
Nach dem Login kopieren

Durch die Änderung HttpContext.Current auf diese Weise kann es im gesamten Testaufbau simuliert werden, wodurch ein konsistentes Verhalten des Controllers und aller abhängigen Bibliotheken sichergestellt wird.

Das obige ist der detaillierte Inhalt vonWie kann ich HttpContext.Current für effektive ASP.NET MVC-Einheitentests 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