MVCContrib测试路线与区域

时间:2010-04-20 02:03:46

标签: unit-testing asp.net-mvc-routing mvccontrib

我正在使用带有区域的MVC 2。为了测试路由,我使用的是MvcContrib。

这是测试代码:

[Test]
public void Home()
{
    MvcApplication.RegisterRoutes(RouteTable.Routes);
    "~/".ShouldMapTo<HomeController>(x => x.Login("Nps"));
}

我不确定如何调用存储在Regions中的路由定义。 调用AreaRegistration.RegisterAllAreas()不是一个选项,因为它给出了一个例外。

由于 勒万

3 个答案:

答案 0 :(得分:5)

这就是我这样做的方式,对我有用

[Test]
public void VerifyRouteMapFor_Test_Area_TestController()
{
    RouteTable.Routes.Clear();

    var testAreaRegistration = new testAreaRegistration();
    testAreaRegistration.RegisterArea(new AreaRegistrationContext(testAreaRegistration.AreaName, RouteTable.Routes));

    "~/test/index".ShouldMapTo<testController>(x => x.Index());
}

答案 1 :(得分:1)

您应该调用您正在测试的区域的AreaRegistration,而不是调用RegisterAllAreas。 RegisterAllAreas扫描所有加载的程序集,因此对测试来说太多了。我会手动设置测试。如果它仍然通过和异常发布在这里或mvccontrib邮件列表。我确信在某些情况下需要更新TestHelper以更好地支持区域。我们尚未向测试助手添加任何特定区域支持。

答案 2 :(得分:0)

对于单元测试,也许最好只做一个区域。但是对于集成测试,您需要测试上下文中的所有路由,imo。