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

Posted

技术标签:

【中文标题】使用 MVC Contrib 测试 ASP.NET MVC 路由【英文标题】:Test ASP.NET MVC routes using MVC Contrib 【发布时间】:2010-11-12 17:58:17 【问题描述】:

我正在尝试使用MVC Contrib 设置路由映射测试,如Test ASP.NET MVC routes using MVC Contrib 中所述

测试编译并执行,但它们总是失败并显示消息“URL 不匹配任何路由。”

我设置了另一个测试来尝试了解问题所在:

    Public Sub TestIndexRoute()
        Dim routes = New RouteCollection
        myMvcApp.MvcApplication.RegisterRoutes(routes)
        Assert.That(routes.Count > 0)
        Assert.NotNull(routes("Default"), "Default route not found.")
        Dim routeData = RouteTestingExtensions.Route("~/Author")
        Assert.NotNull(routeData, "routeData is Nothing.")
        Assert.That(routeData.Values("controller") = "Author")
    End Sub

该测试在Assert.NotNull(routeData, "routeData is Nothing.") 上失败,所以我知道尝试访问我的应用程序的 RouteCollection 的 MVCContrib 代码一定有问题。

来自博文:

还假设您在 ASP.NET MVC RouteCollection 对象中设置了路由。

我如何确认我正在这样做?我在后面的 Global.asax 代码中的 MvcApplication.RegisterRoutes 方法中使用 routes.MapRoute。要正确设置,还有其他事情要做吗?

编辑:我应该提一下我是单元测试的新手。我已经推迟学习它太久了,这似乎是一个很好的起点。

【问题讨论】:

【参考方案1】:

试试:

MvcApplication.RegisterRoutes(RouteTable.Routes);

代替:

Dim routes = New RouteCollection
myMvcApp.MvcApplication.RegisterRoutes(routes)

见RouteTestingExtensions, line 43

【讨论】:

谢谢!那就是我错过的那块!

以上是关于使用 MVC Contrib 测试 ASP.NET MVC 路由的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET中的MVC如何使用?

ASP.NET中的MVC如何使用?

如何对 Asp.net MVC 文件进行单元测试

测试 ASP.NET MVC 控制器 Httpget

csharp ASP.NET的助手,ASP.NET MVC应用服务器端测试

ASP/NET MVC:带会话的测试控制器?嘲讽?