Maison >développement back-end >C++ >Comment se moquer de HttpContext.Current dans une méthode de test d'initialisation ?

Comment se moquer de HttpContext.Current dans une méthode de test d'initialisation ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-17 02:51:09819parcourir

How to Mock HttpContext.Current in a Test Init Method?

Mock HttpContext.Current dans la méthode d'initialisation du test

Puisque HttpContextBase hérite de ControllerContext et que HttpContext hérite de la bibliothèque de classes de base, se moquer de HttpContext.Current dans la méthode Init rencontrera des conflits d'héritage.

Alternatives utilisant HttpContext

Heureusement, on peut se moquer directement du HttpContext, ce qui suffit pour faire fonctionner IPrincipal (User) et IIdentity :

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

// 用户已登录
HttpContext.Current.User = new GenericPrincipal(
    new GenericIdentity("username"),
    new string[0]
);

// 用户已注销
HttpContext.Current.User = new GenericPrincipal(
    new GenericIdentity(String.Empty),
    new string[0]
);</code>

Ce code garantit que le HttpContext est simulé dans votre contrôleur et dans toutes les bibliothèques appelées dans la méthode Init.

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!

Déclaration:
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