4

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

这是测试代码:

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

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

谢谢雷文

4

3 回答 3

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());
}
于 2010-06-03T21:21:58.603 回答
1

与其调用 RegisterAllAreas,不如调用正在测试的区域的 AreaRegistration。RegisterAllAreas 扫描所有已加载的程序集,因此对测试做了太多的工作。我会手动设置测试。如果它仍然通过并且异常发布在这里或到 mvccontrib 邮件列表。我确信在某些情况下需要更新 TestHelper 以更好地支持区域。我们还没有为测试助手添加任何特定区域的支持。

于 2010-04-30T02:46:31.130 回答
0

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

于 2010-10-19T15:03:07.723 回答