Можно ли проверить проект ASP.NET MVC с маршрутизацией атрибутов?

Я провел дни, пытаясь насмехаться, заглушить и подделать свой путь к проверяемому приложению. Обычно я не тестирую действия контроллера, но вместо этого проверяю все мои другие классы и шаблоны.

Стена, на которую я попал, была связана с новой функцией маршрутизации атрибутов. Хотя я могу использовать классы маршрутизации для регистрации моих правил и т.д. Я получаю эту ошибку, когда вызывается MapMvcAttributeRoutes.

Этот метод не может быть вызван во время фазы инициализации перед запуском приложения

Это обсуждается здесь.

MapMvcAttributeRoutes: этот метод не может быть вызван во время фазы инициализации перед запуском приложения

Честно говоря, я не могу понять ответ (-ы). Не код, а его фрагментированные версии, ссылки на другие ошибки, GitHub и т.д.

Я немного потерял ответ на нижнюю строку:

По состоянию на 23 октября 2014. Возможно ли зарегистрировать все маршруты в условиях тестирования, какая версия MVC мне нужна и какие классы/методы я вызываю для этого?

В настоящее время мои классы, использующие UrlHelper, закручиваются, потому что отсутствуют необходимые маршруты. Я вставляю подклассы, чтобы обойти эту проблему, но я не думаю, что ее необоснованно подделывать среду MVC во время выполнения, и мое приложение запускается без большого количества акробатики DI.

Было бы неплохо, если бы они были простым помощником в самой структуре, которая могла бы использовать объект JSON, описывающий необработанный HTTP-запрос, и иметь Controller, HttpContext, ControllerContext и т.д. и т.д. все создавалось должным образом, как если бы это был реальный запрос от провода.

Спасибо,

Лука

Ответ 1

Хороший вопрос, и я думаю, что ответ заключается в том, что в дизайне этой части структуры мало или вообще не было продумано тестирование маршрутов. Могут быть способы проверки маршрутов, но они будут косвенными, недокументированными и склонными к перерыву при отправке новой версии MVC.

У меня есть сообщение в блоге здесь о моем опыте по этой теме. Я также предлагаю вам также кампанию для лучшей проверки в ASP vNext в общедоступном трекере.

Ответ 2

Во время ежедневного выступления коллега упомянул, что он тестировал интеграцию через веб-сервер в памяти. Заинтригованный, он показал мне, как и я был поражен, узнал что-то: -)

Вы можете создать экземпляр HttpServer и прочитать его конфигурацию, а затем вызвать экземпляр сервера. Я не пробовал, но я не вижу причин, почему это не будет перечислять ваши маршруты и код, требующий правильной конфигурации, все будет работать.

Этот вопрос SO связан и может помочь в его настройке:

Как HttpServer In-Memory знает, какой проект WebAPI для размещения?