Heim >Backend-Entwicklung >C++ >Wie verspotte ich HttpContext.Current in der Basisklasseninitialisierung für ASP.NET MVC-Komponententests?
Adressierung von HttpContext.Current Mocking in der Basisklasseninitialisierung für ASP.NET MVC-Komponententests
Unit-Tests von ASP.NET MVC-Anwendungen erfordern oft Mocking HttpContext.Current
, um Benutzeranfragen und -antworten zu simulieren. Ein häufiges Problem entsteht, wenn eine Testklasse von einer Basisklasse erbt, die bei ihrer Initialisierung HttpContext.Current
verwendet. Es reicht nicht aus, einfach den Kontext für den Controller selbst zu verspotten.
Das bereitgestellte Beispiel zeigt, wie HttpContext
für den Controller mithilfe von FakeControllerContext
und SetFakeControllerContext
verspottet wird. Wenn jedoch die Init
-Methode der Basisklasse auf HttpContext.Current
zugreift, muss dies direkt behoben werden. Um eine konsistente Verspottung sicherzustellen, müssen wir auch HttpContext.Current
innerhalb der Testinitialisierung verspotten.
Verspotten HttpContext.Current
Effektiv
Wir können die Klasse System.Web.HttpContext
effektiv verspotten, indem wir ihre Eigenschaften IPrincipal
und IIdentity
ersetzen. Der folgende Codeausschnitt veranschaulicht dies:
<code class="language-csharp">HttpContext.Current = new HttpContext( new HttpRequest("", "http://tempuri.org", ""), new HttpResponse(new StringWriter()) ); // Simulate a logged-in user HttpContext.Current.User = new GenericPrincipal( new GenericIdentity("username"), new string[0] ); // Simulate a logged-out user HttpContext.Current.User = new GenericPrincipal( new GenericIdentity(String.Empty), new string[0] );</code>
Durch die Implementierung dieser Verspottungsstrategie innerhalb der Initialisierungsmethode des Tests vor dem Aufruf der Init
-Methode der Basisklasse stellen wir sicher, dass HttpContext.Current
korrekt verspottet wird, sodass der Test Benutzerinteraktionen genau simulieren und bei Bedarf auf HttpContext
zugreifen kann . Dieser Ansatz garantiert ein konsistentes Verhalten sowohl im Controller als auch in der Basisklasse während der Testausführung.
Das obige ist der detaillierte Inhalt vonWie verspotte ich HttpContext.Current in der Basisklasseninitialisierung für ASP.NET MVC-Komponententests?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!