我有 .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 中删除该服务,但没有成功,集成测试开始时后台服务仍在运行。