Como a unidade de teste para IgnoreRoute em ASP.NET MVC
-
03-07-2019 - |
Pergunta
Em ASP.NET MVC, eu posso obter informações sobre a unidade de teste para rotas e rotas personalizadas, mas eu não consigo descobrir como fazer o teste de unidade para IgnoreRoute.
routes.IgnoreRoute ( "{recurso} .axd / {* pathInfo}");
código de prática é muito apreciado.
ASP.NET MVC Framework (Parte 2): URL Routing
ASP.NET MVC Dica # 13 - Teste Unidade suas rotas personalizadas
ASP.NET MVC Dica # 30 - Criar restrições de rota personalizada
Solução
Gostaria de verificar que o RouteHandler na RouteData para uma rota correspondente o caminho ignorado é do tipo 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) );
}
Outras dicas
Se você usar a classe testhelper MvcContrib (http://nuget.org/packages/MvcContrib.Mvc3.TestHelper-ci), você pode simpifly-lo ainda mais:
[TestMethod]
public void TestIgnoredRoute()
{
// Arrange
RouteTable.Routes.Clear();
// Act
GlobalApplication.RegisterRoutes(RouteTable.Routes);
// Assert
"~/some.axd/path".ShouldBeIgnored();
}