ИМХО имеет смысл юнит-тестирование только пользовательских маршрутов.Проверка того, что параметры строки запроса будут преобразованы в аргументы действия контроллера, не является необходимой и не приносит никакой пользы вашему приложению.Эта работа выполняется с помощью связующего устройства по умолчанию и тщательно тестируется Microsoft (я надеюсь).
При этом MVCContrib.TestHelper
позволяет элегантно тестировать пользовательские маршруты.Предположим, например, что вы реализовали подкачку в своем приложении и определили собственный маршрут, чтобы иметь красивые URL для SEO:
routes.MapRoute(
"Custom",
"foo/{startPage}/{endPage}",
new
{
controller = "Search",
action = "Results",
}
);
и вот соответствующий контроллер:
public class SearchController : Controller
{
public ActionResult Results(int startPage, int endPage)
{
return View();
}
}
Этот маршрут можетбудет проверен следующим образом:
"~/foo/10/20".ShouldMapTo<SearchController>(c => c.Results(10, 20));
Это будет эффективно проверять, что контроллер по умолчанию Search
, действие по умолчанию Results
и что оба параметра startPage
и endPage
будут инициализированы в своисоответствующие значения из маршрута.