6

WebAPI プロジェクトと VS Test プロジェクトを使用したソリューションがあります。

私のテストでは、コントローラー自体をインスタンス化して何か (コンテキストなど) を注入するのではなく、Url を介して RestSharp を使用して API を呼び出します。

私の質問は、テストの実行が開始されたときに IIS Express を介して Web プロジェクトを起動するようにテスト プロジェクトに指示する方法はありますか? 現在、VSの2つのインスタンスを実行しています.1つはデバッグが開始されたWebが投影され、もう1つはテストパッケージを実行しています

4

5 に答える 5

3

ネットワークを使用して Web API を単体テストすることはお勧めしません。テストで不安定になる可能性に心を開き、サービス自体よりもはるかに多くのテストを行うことになります。

しかし、本当にそうしなければならない場合、おそらくクライアントが API と情報を交換できることをテストするために、サービスのセルフホスティングを検討することをお勧めします。

http://www.asp.net/web-api/overview/hosting-aspnet-web-api/self-host-a-web-api

セルフホスティングを使用すると、数行のコードで Web API 用のサーバーを起動でき、テストでこのサーバーを適切な場所で起動できます。ほとんどの場合、これはサービスを IIS Express でホストするのと同じように動作するはずです。しかし、いくつかの重要な違いがあります。たとえば、使い慣れた System.Web の概念の一部 (HttpContext.Current など) を使用できなくなります。

アップデート:

役に立つかもしれない Web API サービスのテストに関するブログ記事を書きました - https://docs.microsoft.com/en-us/archive/blogs/youssefm/writing-tests-for-an-asp-net-web- API サービス

それが役立つことを願っています。

于 2013-01-20T03:07:31.710 に答える
2

これは古い投稿であることは知っていますが、この問題に直面したばかりです。誰かがこれを読んだ場合は、より詳細な応答を提供できます。

要するに..単体テストアセンブリを参照するコンソールアプリを作成し、リフレクションとシンプルなメニューシステムを介して、任意のテストを実行できます。

次に、複数のスタートアップ プロジェクトを Web プロジェクトとコンソール プロジェクトに設定します。

その後、F5 キーを押して、同じセッション内から単体テストと Web プロジェクトの両方をデバッグできます。複数のソリューションが必要なプロセスに接続する必要はありません。

于 2016-05-14T00:06:30.207 に答える