Maison >développement back-end >C++ >Comment simuler efficacement HttpContext dans les tests unitaires ASP.NET MVC à l'aide de Moq ?

Comment simuler efficacement HttpContext dans les tests unitaires ASP.NET MVC à l'aide de Moq ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-11 20:41:42182parcourir

How to Effectively Mock HttpContext in ASP.NET MVC Unit Tests Using Moq?

Utilisez Moq pour simuler HttpContext dans ASP.NET MVC

Lors du test des contrôleurs ASP.NET MVC, se moquer du HttpContext est essentiel pour isoler le comportement de votre code. Cet article montrera comment y parvenir en utilisant le framework de moquerie populaire Moq.

Supposons que vous deviez vous moquer du HttpContext dans une méthode de test :

<code>[TestMethod]
public void Home_Message_Display_Unknown_User_when_coockie_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();

    controller.HttpContext = context.Object; // 此处出错
}</code>

Dans le code ci-dessus, vous rencontrerez une erreur en essayant de définir controller.HttpContext car il s'agit d'une propriété en lecture seule. Cependant, ce problème peut être résolu en utilisant l'attribut mutable ControllerContext :

<code>controller.ControllerContext = new ControllerContext(context.Object, new RouteData(), controller);</code>

HttpContext peut être efficacement simulé en définissant l'attribut ControllerContext. Pour plus d'informations et d'exemples sur la simulation de RequestContext et HttpContext, veuillez vous référer aux ressources suivantes :

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