Как выполнить модульное тестирование для IgnoreRoute в ASP.NET MVC
-
03-07-2019 - |
Вопрос
В ASP.NET MVC я могу получить информацию о модульном тестировании маршрутов и пользовательских маршрутов, но не могу понять, как выполнить модульное тестирование для IgnoreRoute.
маршруты.IgnoreRoute("{resource}.axd/{*pathInfo}");
Практичный код очень ценится.
ASP.NET MVC Framework (часть 2):URL-маршрутизация
Совет ASP.NET MVC № 13. Модульное тестирование ваших пользовательских маршрутов
Совет ASP.NET MVC № 30. Создание пользовательских ограничений маршрута
Решение
Я бы проверил, что 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) );
}
Другие советы
Если вы используете класс testhelper 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();
}