MVCContrib 测试路线与区域

发布于 2024-08-29 10:58:17 字数 341 浏览 6 评论 0原文

我正在将 MVC 2 与区域一起使用。为了测试路由,我使用 MvcContrib。

这是测试代码:

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

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

谢谢 雷文

I am using MVC 2 with Areas. To test routing, I am using MvcContrib.

This is the testing code:

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

I am not sure how to call routing definition that are stored in Areas.
Calling AreaRegistration.RegisterAllAreas() is not an option as it gives an exception.

Thanks
Revin

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

少女的英雄梦 2024-09-05 10:58:17

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

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

This is the way I do it which works for me

[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());
}
像极了他 2024-09-05 10:58:17

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

Rather than calling RegisterAllAreas, you should call the AreaRegistration for that area you are testing. The RegisterAllAreas scans all the loaded assemblies and as a result does too much for a test. I would manually setup the test. If it still throughs and exception post it here or to the mvccontrib mailing list. I am sure that there are some cases where the TestHelper needs to be updated to support areas better. We have not added any specific area support to the test helpers yet.

雨落星ぅ辰 2024-09-05 10:58:17

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

For a unit test, perhaps it's best to just do the one area. But for an integration test, you'd want to test all the routes in the context, imo.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文