これで半日を過ごしましたが、何の成功もありませんでした。 Web APIで単体テストルートをどのようにしますか?単体テストWeb APIのカスタムルート
私は、次のURIを与えられた意味:
~/Test/Get/2
私は上記のURLは、テストコントローラによって捕獲され、int型のパラメータを受け入れるアクションを取得していることをユニットテストしたいです。
これで半日を過ごしましたが、何の成功もありませんでした。 Web APIで単体テストルートをどのようにしますか?単体テストWeb APIのカスタムルート
私は、次のURIを与えられた意味:
~/Test/Get/2
私は上記のURLは、テストコントローラによって捕獲され、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
聞かせください、私は関連質問で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 –
and this:http://www.peterprovost.org/blog/2012/06/16/unit-testing-asp-dot-net-web-api/ –
あなたはNuGetパッケージMvcRouteUnitTesterを使うことができます(かなり簡単です)http://nuget.org/packages/MvcRouteUnitTester – Styxxy