小编CF7*_*CF7的帖子

.NET Core 在集成测试中停止 HostedService

我有 .NET Core Web API 项目,由于某些原因,我们在该项目中创建了一个后台服务,并在应用程序启动时开始运行后台服务。因此,我们创建了一个BackgroundWorkderService继承自BackgroundService (Microsoft.Extensions.Hosting)的 ,如下所示:

public class BackgroundWorkerService : BackgroundService
{
    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        await DoWork(stoppingToken);
    }

    public override async Task StartAsync(CancellationToken cancellationToken)
    {
        await ExecuteAsync(cancellationToken);
    }

    public override Task StopAsync(CancellationToken cancellationToken)
    {
        return Task.CompletedTask;
    }
}
Run Code Online (Sandbox Code Playgroud)

为了在应用程序启动时运行它,我将后台服务添加到 Program.cs 中的托管服务中,如下所示:

.ConfigureServices(services =>
                services.AddHostedService<BackgroundWorkerService>());
Run Code Online (Sandbox Code Playgroud)

现在,我们需要创建一个集成测试,并且我们希望在运行集成测试时停止后台服务。

有谁知道如何在集成测试中阻止它?我尝试从ConfigureTestServices 中删除该服务,但没有成功,集成测试开始时后台服务仍在运行。

c# integration-testing asp.net-core-hosted-services

9
推荐指数
2
解决办法
4490
查看次数