在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
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<TStartup> where TStartup : class { protected override void ConfigureWebHost(IWebHostBuilder builder) { builder.ConfigureServices(services => { //... }); } } 相关链接: |
请发表评论