Вопрос новичка на MvcContrib TestHelpers - PullRequest
2 голосов
/ 28 мая 2010

Я только начинаю использовать TestHelpers в MvcContrib. Я хочу попробовать и протестировать метод действия на моем контроллере, который сам проверяет, является ли IsAjaxRequest () истинным.

Я использовал тот же код, который показан в примерах TestHelper, чтобы настроить TestControllerBuilder

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

Так что в _controller есть весь фальшивый / издевательский HttpContext, что действительно здорово. Но что мне теперь делать, чтобы заставить IsAjaxRequest () на внутренне фальсифицированном объекте запроса возвращать true?

Ответы [ 2 ]

7 голосов
/ 28 мая 2010

Вот код, который я использовал, код в моем вопросе вверху страницы использует тестовые помощники MvcContrib для создания красиво сфальсифицированного контроллера (_controller), который внутренне имеет поддельные версии HttpRequest, HttpResponse и т. Д. Затем, согласно совету Патрика, я создал новая коллекция заголовков, содержащая запись для X-Requested-With. Затем велел _controller.HttpContext.Request.headers возвращать мою коллекцию заголовков всякий раз, когда она пытается просмотреть заголовки (т. Е. Именно это происходит при вызове IsAjaxRequest ()).

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

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

Работает как угощение.

2 голосов
/ 28 мая 2010

Необходимо заглушить свойство HttpRequest.Headers, чтобы вернуть коллекцию NameValueCollection, содержащую запись для «X-Requested-With» со значением «XMLHttpRequest».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...