Maison > développement back-end > C++ > Comment puis-je me moquer de HttpContext.Current pour des tests unitaires ASP.NET MVC efficaces ?

Comment puis-je me moquer de HttpContext.Current pour des tests unitaires ASP.NET MVC efficaces ?

Barbara Streisand
Libérer: 2025-01-17 03:01:09
original
322 Les gens l'ont consulté

How Can I Mock HttpContext.Current for Effective ASP.NET MVC Unit Testing?

Mock HttpContext.Current dans les tests unitaires

Lors du test unitaire d'une application ASP.NET MVC, vous devez vous moquer du HttpContext.Current renvoyé par l'appel d'attribut HttpContext.Current. Cette propriété renvoie une instance de System.Web.HttpContext qui n'étend pas System.Web.HttpContextBase (la classe utilisée pour se moquer).

HttpContext.Current et HttpContextBase

L'introduction de HttpContextBase vise à résoudre le problème qui HttpContext est difficile à simuler. Cependant, il n'y a aucune relation entre ces deux classes, HttpContextWrapper sert d'adaptateur entre elles.

Mock HttpContext pour un accès partagé

Pour simuler HttpContext afin qu'il soit partagé entre le contrôleur et toute bibliothèque appelée dans la méthode TestInitialize, vous pouvez utiliser le code suivant :

<code class="language-csharp">HttpContext.Current = new HttpContext(
    new HttpRequest("", "http://tempuri.org", ""),
    new HttpResponse(new StringWriter())
    );</code>
Copier après la connexion

Définir le principal utilisateur

Pour configurer un utilisateur connecté, utilisez le code suivant :

<code class="language-csharp">HttpContext.Current.User = new GenericPrincipal(
    new GenericIdentity("username"),
    new string[0]
    );</code>
Copier après la connexion

Définir l'utilisateur comme non connecté

Pour usurper l'identité d'un utilisateur non authentifié, utilisez :

<code class="language-csharp">HttpContext.Current.User = new GenericPrincipal(
    new GenericIdentity(String.Empty),
    new string[0]
    );</code>
Copier après la connexion

En modifiant HttpContext.Current de cette manière, il peut être simulé tout au long de la configuration de test, garantissant un comportement cohérent du contrôleur et de toutes les bibliothèques dépendantes.

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