Question

Je viens juste de commencer à utiliser les TestHelpers dans MvcContrib. Je veux essayer de tester une méthode d'action sur mon contrôleur qui se teste si IsAjaxRequest () est vrai.

Je l'ai utilisé le même code qui apparaît dans les échantillons de TestHelper pour mettre en place la TestControllerBuilder

_controller = new StarsController();    
_builder = new TestControllerBuilder();
_builder.InitializeController(_controller);

Alors que _controller a toutes les truquée / moqua HttpContext à l'intérieur, ce qui est vraiment super. Mais qu'est-ce que je fais maintenant pour forcer IsAjaxRequest () sur l'objet de demande truquée en interne pour revenir vrai?

Était-ce utile?

La solution

Vous devez bouchonner la propriété HttpRequest.Headers pour retourner un NameValueCollection qui contient une entrée pour « X-requested- » avec la valeur « XMLHttpRequest ».

Autres conseils

Voici le code je, le code dans ma question en haut de la page utilise MvcContrib testhelpers pour créer un contrôleur bien truquée (de _controller) que les versions en interne ont falsifié des HttpRequest, HttpResponse etc. Puis, comme par des conseils de Patrick I créé une nouvelle collection en-têtes contenant une entrée pour X-Requested-With. Ensuite, dit _controller.HttpContext.Request.headers de retourner ma collection en-têtes chaque fois qu'il tente de regarder les en-têtes (à savoir qui est ce qui se produit lorsque IsAjaxRequest () est appelée).

    var headers = new NameValueCollection();
    headers.Add("X-Requested-With", "XMLHttpRequest");

    _controller.HttpContext.Request.Stub(r => r.Headers).Return(headers);

Fonctionne comme une friandise.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top