我已經花了半天時間沒有取得任何成功。你如何在Web API中測試路由?單元測試Web API中的自定義路線
我的意思是給出下面的URI:
~/Test/Get/2
欲單元測試,上述URL由測試控制器捕獲和Get動作受理int參數。
我已經花了半天時間沒有取得任何成功。你如何在Web API中測試路由?單元測試Web API中的自定義路線
我的意思是給出下面的URI:
~/Test/Get/2
欲單元測試,上述URL由測試控制器捕獲和Get動作受理int參數。
這是我做什麼,請讓我知道你在想什麼
[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"]);
}
你可以發佈你的模擬代碼'_httpContexMock'和'_routes'?我一直在研究相同的問題,並提出這個問題:http://stackoverflow.com/q/11851558/61654。 – ahsteele 2012-08-09 02:05:57
我描述瞭如何在相關問題測試Web API路線準備使用的例子:Testing route configuration in ASP.NET WebApi
爲了測試路線,我創建了一個庫,以幫助你的斷言 - MyWebApi:https://github.com/ivaylokenov/MyWebApi
基本上,你可以做到以下幾點:
MyWebApi
.Routes()
.ShouldMap(「api/WebApiController/SomeAction/5」)
.WithJsonContent(@」{「」SomeInt」」: 1, 「」SomeString」」: 「」Test」」}」)
.And()
.WithHttpMethod(HttpMethod.Post)
.To(c => c.SomeAction(5, new RequestModel
{
SomeInt = 1,
SomeString = 「Test」
}));
如果你想自己實現它,你可以看到這裏的代碼,並將其複製: https://github.com/ivaylokenov/MyWebApi/blob/master/src/MyWebApi/Utilities/RouteResolvers/InternalRouteResolver.cs
可能是有用的? http://stackoverflow.com/questions/10446174/httpclient-with-asp-net-webapi-in-unit-testing-scenario – 2012-07-08 19:53:42
和這個:http://www.peterprovost.org/blog/2012/06/16/unit-testing-asp-dot-net-web-api/ – 2012-07-08 19:54:27
你可以嘗試使用NuGet包MvcRouteUnitTester(很簡單)http://nuget.org/packages/MvcRouteUnitTester – Styxxy 2012-07-08 21:09:15