Как модульное тестирование для IgnoreRoute в ASP.NET MVC
В ASP.NET MVC я могу получить информацию об модульном тестировании маршрутов и настраиваемых маршрутов, но я не могу понять, как выполнить модульное тестирование для IgnoreRoute.
routes.IgnoreRoute( "{ресурс}.axd/{* PathInfo}" );
Практический код очень ценится.
ASP.NET MVC Framework (часть 2): Маршрутизация URL
Совет ASP.NET MVС# 13 - Unit Test Пользовательские маршруты
Совет ASP.NET MVС# 30 - Создание пользовательских ограничений маршрутов
Ответы
Ответ 1
Я бы проверял, что RouteHandler в RouteData для маршрута, соответствующего игнорируемому пути, имеет тип StopRoutingHandler;
[TestMethod]
public void TestIgnoredRoute()
{
// Arrange
var routes = new RouteCollection();
GlobalApplication.RegisterRoutes(routes);
// Act
var context = new FakeHttpContext("~/some.axd/path");
var routeData = routes.GetRouteData(context);
// Assert
Assert.IsInstanceOfType( routeData.RouteHandler, typeof(StopRoutingHandler) );
}
Ответ 2
Если вы используете класс тестового класса MvcContrib (http://nuget.org/packages/MvcContrib.Mvc3.TestHelper-ci), вы можете значительно упростить его:
[TestMethod]
public void TestIgnoredRoute()
{
// Arrange
RouteTable.Routes.Clear();
// Act
GlobalApplication.RegisterRoutes(RouteTable.Routes);
// Assert
"~/some.axd/path".ShouldBeIgnored();
}