Maison > développement back-end > C++ > Comment simuler correctement HttpContext dans les tests unitaires ASP.NET MVC avec Moq ?

Comment simuler correctement HttpContext dans les tests unitaires ASP.NET MVC avec Moq ?

Linda Hamilton
Libérer: 2025-01-11 20:46:15
original
322 Les gens l'ont consulté

How to Properly Mock HttpContext in ASP.NET MVC Unit Tests with Moq?

Se moquer de HttpContext dans les tests unitaires ASP.NET MVC avec Moq

Les tests unitaires des contrôleurs ASP.NET MVC nécessitent souvent une simulation HttpContext pour isoler votre code des dépendances du serveur Web. Moq, un puissant framework de simulation, fournit une solution robuste pour simuler HttpContext et ses propriétés.

Le défi :

Se moquer directement de HttpContext avec Moq présente un piège courant :

<code class="language-csharp">[TestMethod]
public void Home_Message_Display_Unknown_User_when_cookie_does_not_exist()
{
    var context = new Mock<HttpContextBase>();
    var request = new Mock<HttpRequestBase>();
    context
        .Setup(c => c.Request)
        .Returns(request.Object);
    HomeController controller = new HomeController();

    // Error: HttpContext is read-only.
    controller.HttpContext = context.Object; 
    ...
}</code>
Copier après la connexion

La tentative d'attribuer un HttpContext simulé directement à la propriété HttpContext du contrôleur échoue car elle est en lecture seule.

La solution :

L'approche correcte consiste à définir la propriété ControllerContext à la place. ControllerContext hérite de HttpContext, fournissant le point d'accès nécessaire :

<code class="language-csharp">controller.ControllerContext = new ControllerContext(context.Object, new RouteData(), controller);</code>
Copier après la connexion

Lectures complémentaires :

Pour des informations plus détaillées sur le mocking HttpContext et RequestContext avec Moq, consultez ces ressources :

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