我正在使用带有区域的MVC 2。为了测试路由,我使用的是MvcContrib。
这是测试代码:
[Test]
public void Home()
{
MvcApplication.RegisterRoutes(RouteTable.Routes);
"~/".ShouldMapTo<HomeController>(x => x.Login("Nps"));
}
我不确定如何调用存储在Regions中的路由定义。 调用AreaRegistration.RegisterAllAreas()不是一个选项,因为它给出了一个例外。
由于 勒万
答案 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。