带区域的 MVCContrib 测试路线

Posted

技术标签:

【中文标题】带区域的 MVCContrib 测试路线【英文标题】:MVCContrib Testing Route with Areas 【发布时间】:2011-02-09 22:54:12 【问题描述】:

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

这是测试代码:

[Test]
public void Home()

    MvcApplication.RegisterRoutes(RouteTable.Routes);
    "~/".ShouldMapTo<HomeController>(x => x.Login("Nps"));

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

谢谢 雷文

【问题讨论】:

【参考方案1】:

这就是我的工作方式

[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());

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于带区域的 MVCContrib 测试路线的主要内容,如果未能解决你的问题,请参考以下文章

mvccontrib 测试助手和验证 http post 路由和参数

使用 MVCContrib 网格进行编辑

接口测试-第01天-万字教程带你入门接口测试

使用 MVC Contrib 测试 ASP.NET MVC 路由

在 GridModel (MVCContrib) 中编辑链接

如何将 css 类应用于 mvccontrib 网格