Mock HttpContext.Current dans la méthode d'initialisation du test ASP.NET
Dans ASP.NET, se moquer de l'objet HttpContext est une méthode courante pour tester les contrôleurs de manière isolée. Cependant, il existe des situations dans lesquelles la classe de test de base initialise des bibliothèques externes qui tentent d'accéder à HttpContext.Current. Si le HttpContext n'est pas correctement simulé dans la méthode d'initialisation du test, une erreur en résultera.
Solution pour simuler HttpContext dans la méthode d'initialisation
Pour résoudre ce problème, il n'est pas nécessaire de se moquer de HttpContextBase car cela n'a rien à voir avec HttpContext.Current. Au lieu de cela, vous pouvez vous moquer directement du HttpContext et le définir comme contexte actuel :
<code class="language-csharp">// 在测试初始化方法中 HttpContext.Current = new HttpContext( new HttpRequest("", "http://tempuri.org", ""), new HttpResponse(new StringWriter()) );</code>
Vous pouvez ensuite définir la propriété User pour qu'elle emprunte l'identité de l'utilisateur connecté :
<code class="language-csharp">// 用户已登录 HttpContext.Current.User = new GenericPrincipal( new GenericIdentity("username"), new string[0] ); // 用户已注销 HttpContext.Current.User = new GenericPrincipal( new GenericIdentity(String.Empty), new string[0] );</code>
L'utilisation de cette approche garantit que HttpContext.Current est simulé dans toute la classe de test, y compris la méthode d'initialisation et toutes les bibliothèques qui y accèdent. De cette façon, vous pouvez tester les actions du contrôleur qui reposent sur la propriété HttpContext tout en initialisant les dépendances qui nécessitent un accès à 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!