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

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

Barbara Streisand
Barbara StreisandOriginal
2025-01-17 03:06:08390Durchsuche

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>

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>

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!

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