Maison > développement back-end > C++ > Comment se moquer efficacement de HttpContext.Current dans les tests unitaires ASP.NET MVC ?

Comment se moquer efficacement de HttpContext.Current dans les tests unitaires ASP.NET MVC ?

Linda Hamilton
Libérer: 2025-01-17 02:47:08
original
498 Les gens l'ont consulté

How to Effectively Mock HttpContext.Current in ASP.NET MVC Unit Tests?

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal