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
Barbara StreisandOriginal
2025-01-17 03:01:09322Durchsuche

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>

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>

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>

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!

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