首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BackgroundService正在阻止WebApplicationFactory.CreateClient在集成测试中的完成

BackgroundService正在阻止WebApplicationFactory.CreateClient在集成测试中的完成
EN

Stack Overflow用户
提问于 2021-12-24 19:55:17
回答 1查看 385关注 0票数 0

我们正在使用SpecFlow为.net-core-3.1 WebApplication编写集成测试。我们的网络应用程序包括一个用于订阅卡夫卡的BackgroundService。这个BackgroundService的存在阻止了WebApplicationFactory.CreateClient方法的完成。我读过一些人在资源有限的测试环境中遇到了类似的问题,但这种情况发生在现代笔记本电脑上。

我们的测试类的构造函数:

代码语言:javascript
复制
public PocServiceSteps(ScenarioContext context)
{
    _context = context;

    _factory = new WebApplicationFactory<Startup>()
    .WithWebHostBuilder(builder => builder.ConfigureServices(services =>
    {
        // setup any required services changes here
    }));

    // this method never completes
    _client = _factory.CreateClient(
        new WebApplicationFactoryClientOptions
        {
            BaseAddress = new Uri($"http://localhost:5000/")
        }
    );
}

我们尝试过的一件事是重写每个https://www.strathweb.com/2021/05/the-curious-case-of-asp-net-core-integration-test-deadlock/https://www.strathweb.com/2021/05/the-curious-case-of-asp-net-core-integration-test-deadlock/,但这并不能解决问题:

代码语言:javascript
复制
private class AsyncFriendlyWebApplicationFactory<T> : WebApplicationFactory<T> where T : class
{
    protected override IHost CreateHost(IHostBuilder builder)
    {
        var host = builder.Build();
        Task.Run(() => host.StartAsync()).GetAwaiter().GetResult();
        return host;
    }
}
EN

回答 1

Stack Overflow用户

发布于 2022-01-19 11:09:19

如果测试不需要后台服务,只需删除它:

代码语言:javascript
复制
var factory = new WebApplicationFactory<Startup>()
    .WithWebHostBuilder(builder =>
        builder.ConfigureTestServices(s =>
        {
            var descriptor = s.SingleOrDefault(
                d => d.ImplementationType ==
                     typeof(MyBackgroundService));

            s.Remove(descriptor);
        })
    );

如果您像这样在Startup.cs中注册了您的服务:

代码语言:javascript
复制
builder.Services.AddHostedService<MyBackgroundService>();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70476179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档