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>
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>
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>
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!