12

在 ASP.NET MVC 中,我可以获得有关路由和自定义路由的单元测试的信息,但我不知道如何对 IgnoreRoute 进行单元测试。

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

非常感谢实用代码。

ASP.NET MVC 框架(第 2 部分):URL 路由

ASP.NET MVC 技巧 #13 – 对您的自定义路由进行单元测试

ASP.NET MVC 技巧 #30 – 创建自定义路由约束

4

2 回答 2

15

我会检查 RouteData 上的 RouteHandler 是否与被忽略的路径匹配的路由是 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) );
    }
于 2009-04-30T03:23:01.570 回答
0

如果您使用 MvcContrib testhelper 类 (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();
}
于 2012-12-14T11:13:45.350 回答