Maison >développement back-end >C++ >Comment se moquer efficacement de HttpContext.Current dans les tests unitaires ASP.NET MVC ?
Maîtriser HttpContext.Current Mocking dans les tests unitaires ASP.NET MVC
Des tests unitaires efficaces dans ASP.NET MVC nécessitent d'isoler le comportement du contrôleur et de la bibliothèque, ce qui nécessite une simulation précise de l'objet HttpContext
. Cet article aborde le défi de la moquerie HttpContext.Current
au sein d'une méthode d'initialisation de test.
Les méthodes traditionnelles, telles que l'emploi de classes d'assistance comme FakeControllerContext
, configurent une simulation HttpContext
pour le contrôleur. Cependant, cette approche échoue souvent, ne parvenant pas à étendre la portée de la simulation à la méthode Init
à laquelle les bibliothèques externes pourraient également accéder à HttpContext.Current
.
La solution optimale manipule directement HttpContext.Current
, en remplaçant les objets IPrincipal
et IIdentity
. Cela garantit une simulation cohérente sur le contrôleur et toutes les bibliothèques appelées lors de la méthode Init
, même dans les applications console. L'extrait de code suivant illustre ceci :
<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>
Cette manipulation directe offre un contrôle complet sur l'environnement de test, permettant des tests unitaires plus robustes et efficaces en simulant avec précision le HttpContext
.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!