Heim > Backend-Entwicklung > C++ > Wie verspotte ich HttpContext.Current in ASP.NET-Testinitialisierungsmethoden?

Wie verspotte ich HttpContext.Current in ASP.NET-Testinitialisierungsmethoden?

Barbara Streisand
Freigeben: 2025-01-17 03:06:08
Original
365 Leute haben es durchsucht

How to Mock HttpContext.Current in ASP.NET Test Initialization Methods?

Mock HttpContext.Current in der ASP.NET-Testinitialisierungsmethode

In ASP.NET ist das Verspotten des HttpContext-Objekts eine gängige Methode zum isolierten Testen von Controllern. Es gibt jedoch Situationen, in denen die Basistestklasse externe Bibliotheken initialisiert, die versuchen, auf HttpContext.Current zuzugreifen. Wenn der HttpContext in der Testinitialisierungsmethode nicht korrekt gemockt wird, tritt ein Fehler auf.

Lösung zur Simulation von HttpContext in der Initialisierungsmethode

Um dieses Problem zu lösen, ist es nicht nötig, HttpContextBase zu verspotten, da es nichts mit HttpContext.Current zu tun hat. Stattdessen können Sie den HttpContext direkt verspotten und als aktuellen Kontext festlegen:

<code class="language-csharp">// 在测试初始化方法中
HttpContext.Current = new HttpContext(
    new HttpRequest("", "http://tempuri.org", ""),
    new HttpResponse(new StringWriter())
);</code>
Nach dem Login kopieren

Sie können dann die User-Eigenschaft so einstellen, dass sie sich als der angemeldete Benutzer ausgibt:

<code class="language-csharp">// 用户已登录
HttpContext.Current.User = new GenericPrincipal(
    new GenericIdentity("username"),
    new string[0]
);

// 用户已注销
HttpContext.Current.User = new GenericPrincipal(
    new GenericIdentity(String.Empty),
    new string[0]
);</code>
Nach dem Login kopieren

Durch die Verwendung dieses Ansatzes wird sichergestellt, dass HttpContext.Current in der gesamten Testklasse verspottet wird, einschließlich der Initialisierungsmethode und aller Bibliotheken, die darauf zugreifen. Auf diese Weise können Sie Controller-Aktionen testen, die auf der HttpContext-Eigenschaft basieren, und gleichzeitig Abhängigkeiten initialisieren, die Zugriff auf den HttpContext erfordern.

Das obige ist der detaillierte Inhalt vonWie verspotte ich HttpContext.Current in ASP.NET-Testinitialisierungsmethoden?. 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