Maison > développement back-end > C++ > Comment se moquer de HttpContext.Current dans l'initialisation de la classe de base pour les tests unitaires ASP.NET MVC ?

Comment se moquer de HttpContext.Current dans l'initialisation de la classe de base pour les tests unitaires ASP.NET MVC ?

Susan Sarandon
Libérer: 2025-01-17 02:56:11
original
333 Les gens l'ont consulté

How to Mock HttpContext.Current in Base Class Initialization for ASP.NET MVC Unit Tests?

Résolution de HttpContext.Current Mocking dans l'initialisation de la classe de base pour les tests unitaires ASP.NET MVC

Les tests unitaires des applications ASP.NET MVC nécessitent souvent des simulations HttpContext.Current pour simuler les demandes et les réponses des utilisateurs. Un problème courant survient lorsqu'une classe de test hérite d'une classe de base qui utilise HttpContext.Current dans son initialisation. Se moquer simplement du contexte du contrôleur lui-même ne suffit pas.

L'exemple fourni montre la simulation de HttpContext pour le contrôleur en utilisant FakeControllerContext et SetFakeControllerContext. Cependant, si la méthode Init de la classe de base accède à HttpContext.Current, cela doit être résolu directement. Pour garantir une moquerie cohérente, nous devons également nous moquer HttpContext.Current lors de l'initialisation du test.

Se moquer HttpContext.Current Efficacement

Nous pouvons effectivement nous moquer de la classe System.Web.HttpContext en remplaçant ses propriétés IPrincipal et IIdentity. 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

En implémentant cette stratégie de simulation dans la méthode d'initialisation du test, avant d'appeler la méthode Init de la classe de base, nous nous assurons que HttpContext.Current est correctement simulé, permettant au test de simuler avec précision les interactions des utilisateurs et d'accéder au HttpContext selon les besoins . Cette approche garantit un comportement cohérent à la fois sur le contrôleur et sur la classe de base pendant l'exécution du test.

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