Вопрос

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

Я использовал один и тот же код, который отображается в образцах TestHeleper для настройки TestControllerBuilder

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

Так что _Controller есть все подделанный / издевающийся httpContext внутри него, что действительно здорово. Но что мне теперь делать, чтобы заставить ISAJaxRequest () на внутреннем объекте запроса, чтобы вернуть истину?

Это было полезно?

Решение

Вам необходимо заглушить свойство HttPrequest.Headers, чтобы вернуть имяValueCollection, которая содержит запись для «X-запрошенного» со значением «XMLHTTPREQUEST».

Другие советы

Вот код, который я использовал, код в моем вопросе в верхней части страницы использует MVCCONTRIB Testheelpers для создания красивого поддельного контроллера (_Controller), который внутренне имеет фальсифицированные версии httpRequest, httpresponse и т. Д. Тогда согласно совету Патрика, я создал новые заголовки Сбор, содержащий запись для X-запрошенного. Затем сказал _controller.httpcontext.request.HTTPCONTEXT.Request.Headers, чтобы вернуть коллекцию моих заголовков, когда он пытается посмотреть на заголовки (например, что происходит, когда называется isajaxrequest ()).

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top