【问题标题】:Issue with mvcContrib fluent route testing in asp.net mvcasp.net mvc 中的 mvcContrib 流畅路由测试问题
【发布时间】:2010-10-21 09:58:55
【问题描述】:

我在使用 MVCContrib Fluent 路由测试时遇到问题。测试失败,但应用程序识别路由。

让我解释一下....

我的注册表中有以下路线(按顺序显示)

routes.MapRoute(
                "PurchaseUnitsPaged",
                "PurchaseUnits/Page{page}",
                new { controller = "PurchaseUnits", action = "Index", page = 1 },
                new { page = @"\d+" }
                );


routes.MapRoute(
                "PurchaseUnit",
                "PurchaseUnits/{unitname}",
                new { controller = "PurchaseUnits", action = "Show" }
            );

路由管道正确地将请求发送到路由 1 的 Index 和路由 2 的 Show

但是,当我使用 MVCContrib fluent 类测试路由时,路由 1 的测试失败。

测试是:

"~/PurchaseUnits/Page{page}".ShouldMapTo<PurchaseUnitsController>(x=> x.Index(1));

测试失败,因为期望是Index,但实际是Show

关于为什么流利的类没有识别正确的路由但 mvc 路由在实际应用程序中起作用的任何想法?或者没有关于如何调整我的测试或路线以允许我进行全面测试的任何建议?

【问题讨论】:

    标签: c# asp.net-mvc mvccontrib fluent mvccontrib-testhelper


    【解决方案1】:

    你的测试应该是:

    "~/PurchaseUnits/Page1".ShouldMapTo<PurchaseUnitsController>(x=> x.Index(1));
    

    网址是~/PurchaseUnits/Page1,而不是~/PurchaseUnits/Page{page}

    【讨论】:

    • 为达林的回答干杯,这行得通。不过我有点困惑,因为我使用以下测试“~/PurchaseUnits/{unitname}”.Route().ShouldMapTo(x => x.Show("{unitname) 测试了问题中提到的第二条路线}"));
    • 那是因为“{unitname}”匹配“{unitname}”。如果您的原始测试是 "~/PurchaseUnits/Page{page}".ShouldMapTo(x=> x.Index("{page}"));它(编辑:不会)已经工作了,但显然 Index 需要一个 int 而 Show 需要一个字符串。实际上,仔细查看您的代码,“~/PurchaseUnits/Page{page}”与您的第一个路线不匹配,因为“{page}”的值与“\d+”不匹配,而是会下降到下一个路由 PurchaseUnitsController.Show("Page{page}").
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-13
    • 2011-11-30
    • 2013-06-07
    • 1970-01-01
    相关资源
    最近更新 更多