2017-09-06 19 views
0

私はちょうど.netコア2.0で空のWeb APIプロジェクトを作成しました。 私はデフォルトコントローラを持っており、統合テストを作成したいと思います。インテグレーションテストコントローラー(.netコア2.0 with web api)

[Route("api/[controller]")] 
public class ValuesController : Controller 
{ 
    // GET api/values 
    [HttpGet] 
    public IEnumerable<string> Get() 
    { 
     return new string[] { "value1", "value2" }; 
    } 
} 

目標は統合の自己ホストであり、url api/valuesを入力して戻り値を確認します。

注意:wep api 2とowinのみを使用しています。これはかなり簡単でした。しかし、次のリンク:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/owinは、.netコアアプリケーションはowinを使用すべきではないと言います。

+0

コントローラからメソッドを呼び出さないのはなぜですか? – hugoterelle

+0

私がコントロールをインスタンス化してGet()を直接呼び出すと、ルートとHttp GETの呼び出しである事実がテストされないためです。それはもっと単体テストになるでしょう。 –

+0

このリンクはあなたに役立ちますhttps://docs.microsoft.com/en-us/aspnet/web-api/overview/testing-and-debugging/unit-testing-controllers-in-web-api – hugoterelle

答えて

4

は、ASP.NETコア2.0との統合テストのための公式ドキュメントを見てみましょう:https://docs.microsoft.com/en-us/aspnet/core/testing/integration-testing

主なアイデアは、あなたのStartupクラスで構成WebHostBuilderTestServerインスタンスを作成することです。 HttpClientインスタンスをTestServerから取得して、自分のホストするAPIを呼び出すことができます

関連する問題