知识就是力量,时间就是生命。这篇文章主要讲述学习 ASP.NET Core 2.1:集成测试中使用 WebApplicationFactory相关的知识,希望能为你提供帮助。
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" />
【学习 ASP.NET Core 2.1(集成测试中使用 WebApplicationFactory)】集成测试类实现 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 => { //... }); } }
推荐阅读
- java android 读写西门子PLC数据,包含S7协议和Fetch/Write协议,s7支持200smart,300PLC,1200PLC,1500PLC
- 当app出现线上奔溃,该如何办()
- 用画布canvas画安卓logo
- EmployeeMapper.xml例子,学习佟刚老师的myBatis课程,记录下的EmployeeMapper.xml,注释详细
- NatApp开启HTTPS访问方式
- async - create-react-app
- xamarin android 文件选择
- Android 四大组件ContentProvider介绍
- On The Way!