學習 ASP.NET Core 2.1:整合測試中使用 WebApplicationFactory

來源:互聯網
上載者:User

標籤:記錄   專案檔   code   core   conf   ice   ras   建構函式   version   

WebApplicationFactory 是 ASP.NET Core 2.1 新特性 MVC functional test infrastructure 中帶來的新東東,它封裝了 TestServer 的使用,讓 ASP.NET Core 的整合測試更簡便、配置更靈活。

今天在一個實際項目中進行了體驗,在這篇博文中簡單記錄一下。

修改整合測試所在的 .csproj 專案檔,Sdk 要設定為 Microsoft.NET.Sdk.Web

<Project Sdk="Microsoft.NET.Sdk.Web">

添加 Microsoft.AspNetCore.App 的 nuget 包引用

<PackageReference Include="Microsoft.AspNetCore.App" />

添加 Microsoft.AspNetCore.Mvc.Testing 的 nuget 包引用,WebApplicationFactory 就在其中

<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="2.1.0" />

整合測試類別實現 IClassFixture<WebApplicationFactory<Startup>> 介面

public class WebApiTest : IClassFixture<WebApplicationFactory<Startup>>{ }

實現了 IClassFixture 介面就能自動在測試類別的建構函式中依賴注入 IClassFixture 泛型中指定的類型,這裡就是 WebApplicationFactory 。

有了 WebApplicationFactory ,就可以直接用它建立 HttpClient 執行個體,代碼如下:

public class WebApiTest : IClassFixture<WebApplicationFactory<Startup>>{    private readonly HttpClient _httpClient;    public WebApiTest(WebApplicationFactory<Startup> factory)    {        _httpClient = factory.CreateClient();    }}

之前沒有 WebApplicationFactory 時的代碼是這樣的

public class WebApiTest{    private readonly HttpClient _httpClient;    public WebApiTest()    {        _httpClient = new TestServer(new WebHostBuilder().UseStartup<Startup>())            .CreateClient();    }}

上面簡單的範例程式碼只是小試牛刀,WebApplicationFactory 更強大之處是通過繼承它重寫 ConfigureWebHost() 方法來配置 WebHost 

public class CustomWebApplicationFactory<TStartup>     : WebApplicationFactory<Startup>{    protected override void ConfigureWebHost(IWebHostBuilder builder)    {        builder.ConfigureServices(services =>        {            //...        });    }}

學習 ASP.NET Core 2.1:整合測試中使用 WebApplicationFactory

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.