API 呼び出しの自動単体テストのセットアップに取り組んでいます。ソリューションには 2 つのプロジェクトがあります。1 つは ASP.net WebAPI プロジェクトで、もう 1 つは Microsoft Test プロジェクトです。
確かに、自動化された単体テストは初めてですが、基本的な概念は理解しています。ASP.net WebAPI プロジェクトをテストするためのオープンソース ツールとフレームワークがいくつかあるようです。現在、WebAPI.Testingフレームワークを使用しています。readme 以外には基本的にドキュメントはありません。readme ドキュメントによると、このツールの使用は非常にシンプルで簡単ですが、私たちにとってはうまくいきません。
テスト方法は次のとおりです。
[TestMethod]
public void TestMethod1()
{
var config = new HttpConfiguration();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Browser browser = new Browser(config);
var response = browser.Get("/api/activities/", (with) =>
{
with.Header(SessionIdHeaderKeyName, "e999e767-5b63-4cc0-b2be-34842eb3adf0");
with.Header("Accept", "application/json");
with.HttpRequest();
});
Assert.Equals(HttpStatusCode.OK, response.StatusCode);
}
このフレームワークを選択したのは、リクエストを呼び出す前にヘッダーを設定できるためです。コードは例外なく正常に実行されますが、パス (/api/activities) で指定したことに関係なく、404 Not Found が返されます。正直なところ、私の WebAPI プロジェクトへの参照がないように見えるため、これがどのように機能するかはまったくわかりません。では、テスト フレームワークは、ルート "/api/activities" が何に解決されるか、または対応するコントローラーがどこにあるのかについて、どうすれば知ることができるでしょうか。
ASP.net WebAPIコントローラーをテストし、リクエストの前にヘッダーを設定できるようにする、このフレームワークまたは他のフレームワークの経験がある人はいますか?
誰かが私がここで間違っているかもしれないことを教えてもらえますか?
WebAPI.Testing フレームワークの作成者にメールを送信したところ、親切にも API プロジェクトへの参照を含める必要があるとのことでした (「テスト プロジェクトは API プロジェクトを参照する必要があるため、ルートが見つかることを願っています」 .")。ただし、テスト プロジェクトの my への参照を WebAPI プロジェクトに追加するだけでは役に立ちませんでした。他の誰かに何か提案があれば、私は大いに感謝します。
テスト プロジェクトに WebAPI プロジェクトへの参照を含めました。また、コードを更新して HttpConfiguration セットアップを含めました。ルート パスとコントローラー アクションが正しいことを確認しました。ただし、テストを実行すると、まだ 404 が返されます。このコードがコントローラーを見つけて配線する場所をどのように知っているのかわかりません。