• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

学习 ASP.NET Core 2.1:集成测试中使用 WebApplicationFactory

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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 =>
        {
            //...
        });
    }
}

相关链接:


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
在ASP.NET中使用MicrosoftWord文档发布时间:2022-07-10
下一篇:
Asp.net(C#)给图片加上水印效果发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap