Могу ли я узнать, какой именованный маршрут соответствует URL-адресу при модульном тестировании маршрутов ASP.NET MVC? - PullRequest
1 голос
/ 13 ноября 2010

Я использую nUnit для проверки маршрутизации моего проекта MVC2.

Когда я регистрирую свои маршруты в Global.asax.cs, я присваиваю каждому маршруту уникальное имя и указываю его RouteData, например:

routes.MapRoute(
    "ShowRecord",
    "{controller}/{id}",
    new { action = "Show" },
    new { id = @"^\d+$" }
);

В своих модульных тестах я затем вызываю RegisterRoutes для объекта RouteCollection и проверяю полученный RouteValueDictionary по каждому URL, который я хочу протестировать.Я использую для этого фиктивный HttpContext, и все работает нормально.

Однако, что я действительно хотел бы знать, так это , какие названные маршруты соответствовали предоставленному URL?Как только мой модульный тест получил объект RouteData, соответствующий тестируемому URL, могу ли я узнать, какой именно маршрут был найден?Или по имени (например, «ShowRecord» в примере выше), или по его индексу в объекте RouteCollection?

1 Ответ

2 голосов
/ 13 ноября 2010

К сожалению, вы не можете сделать это. См. Как получить имя маршрута из RouteData? для получения дополнительной информации.

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

Назначение имени маршрута - предоставить ключ поиска для механизма маршрутизации для поиска маршрутов. Он работает так же, как индекс в SQL Server.

...