Web API中的单元测试自定义路由

Gig*_*aPr 8 c# asp.net-mvc-4 asp.net-web-api

我已经花了半天时间没有成功.如何在Web API中对路由进行单元测试?

我的意思是给出以下URI:

~/Test/Get/2
Run Code Online (Sandbox Code Playgroud)

我想进行单元测试,测试控制器捕获上面的url,接受int参数的Get操作.

Gig*_*aPr 0

这就是我所做的,请告诉我你的想法

[Test]
public void Should_be_able_to_route_to_gettables_action_in_databaseschemaexplorercontroller()
{
    const string url = "~/DatabaseSchemaExplorer/Tables/DatabaseType/Provider/DataSource/DatabaseName";

    _httpContextMock.Expect(c => c.Request.AppRelativeCurrentExecutionFilePath).Return(url);

    var routeData = _routes.GetRouteData(_httpContextMock);

    Assert.IsNotNull(routeData, "Should have found the route");
    Assert.AreEqual("DatabaseSchemaExplorer", routeData.Values["Controller"]);
    Assert.AreEqual("Tables", routeData.Values["action"]);
    Assert.AreEqual("DatabaseType", routeData.Values["databaseType"]);
    Assert.AreEqual("Provider", routeData.Values["provider"]);
    Assert.AreEqual("DataSource", routeData.Values["dataSource"]);
    Assert.AreEqual("DatabaseName", routeData.Values["databaseName"]);
}
Run Code Online (Sandbox Code Playgroud)