[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; //Here I am getting an error (read only).
...
}
mon contrôleur de base a un remplacement de l'initialisation qui obtient ce requestContext. J'essaie de transmettre cela, mais je ne fais pas quelque chose de bien.
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
}
Où puis-je obtenir plus d'informations sur la simulation de mon RequestContext et de HttpContext à l'aide de Moq? J'essaye de me moquer des cookies et du contexte général.
Créez une requête, une réponse et placez-les toutes les deux dans HttpContext:
la source
Merci utilisateur 0100110010101.
Cela a fonctionné pour moi et j'ai eu un problème lors de l'écriture du testcase pour le code ci-dessous:
Et voici les lignes qui ont résolu le problème
Cela pourrait être utile pour les autres.
la source
Voici comment j'ai utilisé ControllerContext pour passer un faux chemin d'application:
la source
Voici un exemple de la façon dont vous pouvez configurer cela: Mocking HttpContext HttpRequest and HttpResponse for UnitTests (using Moq)
Notez les méthodes d'extension qui aident vraiment à simplifier l'utilisation de ces classes moqueuses:
Voici un exemple de la façon d'écrire un test unitaire à l'aide de moq pour vérifier qu'un HttpModule fonctionne comme prévu: Test unitaire pour HttpModule utilisant Moq pour envelopper HttpRequest
Mise à jour: cette API a été refactorisée en
la source