ASP入門.ネットコア統合テスト


この投稿では、ASPのテスト方法を簡単に紹介します.NETコアコントローラ.
「統合テスト」という用語は、データアクセスのテストやファイルシステムへのアクセスなどの他のケースもカバーします.

プロジェクトを設定する


一般的なガイドラインは、ASP . NETを構築することです.NETコアプロジェクトの次の手順
.
├── src
│   └── MyProject.Api
│       └── Controllers
│           └── ValuesController
└── test
    ├── IntegrationTests
    │   └── MyProject.Api.Test
    │       └── ValuesControllerTest
    └── UnitTests

テストステットnugetをインストールしてください


クリエイト.NETコアテストプロジェクトMicrosoft.AspNetCore.TestHost パッケージ.
このパッケージは、TestServer .> Install-Package Microsoft.AspNetCore.TestHost

基底クラスの作成


ベースクラスを作成するControllerTest クラスは継承できます.我々は、設定しますTestServer and HttpClient リクエストを実行するために使用します.
[TestClass]
public abstract class IntegrationTestInitializer
{
    protected HttpClient _client;

    [TestInitialize]
    public void Setup()
    {
        var builder = new WebHostBuilder()
            .UseStartup<Startup>();
        var server = new TestServer(builder);

        _client = server.CreateClient();
    }
}

コントローラを作成する


テストしたいコントローラを振りましょう
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
    // GET api/values
    [HttpGet]
    public ActionResult<IEnumerable<string>> Get()
    {
        return new string[] { "value1", "value2" };
    }
}
基本クラスを設定すると、基本クラスから継承して_client APIに対する要求を実行するには
[TestClass]
public class ValuesControllerTest : IntegrationTestInitializer
{
    [TestMethod]
    public async Task CanGetValues()
    {
        List<string> expectedResponse = new List<string> { "value1", "value2" };

        var responseJson = await _client.GetStringAsync("api/values");
        List<string> actualResponse = JsonConvert.DeserializeObject<List<string>>(responseJson);

        Assert.AreEqual(expectedResponse.Count, actualResponse.Count);
        foreach(var expectedValue in expectedResponse)
        {
            Assert.IsTrue(actualResponse.Contains(expectedValue));
        }
    }
}
このポストでは、非常に基本的なASPをテストする方法を説明しました.NETコアAPI.
実際の世界ではおそらくAPIの背後にあるデータベースを持っていて、APIキーやJWTによって保護されているかもしれません.
しかし、この投稿は、統合テストへの迅速な導入として機能します.

カイオズワルド / 統合テストサンプル


ASP .NETコアサンプルプロジェクトの統合テストを書く方法を示します


統合テストサンプル


ASP .Net Coreサンプルプロジェクトの紹介
View on GitHub