迁移到最小API-测试设置Json未覆盖程序



感谢这个答案:集成测试和托管ASP。NET Core 6.0,不带启动类

我已经能够使用API执行集成测试。

WebApplicationFactory<Program>? app = new WebApplicationFactory<Program>()
.WithWebHostBuilder(builder =>
{
builder.ConfigureServices(services =>
{
});
});
HttpClient? client = app.CreateClient();

这已经通过使用API项目中的appsettings.json实现了。我现在尝试使用integrationtestsettings.json,而不是使用:

IConfiguration configuration = new ConfigurationBuilder()
.SetBasePath(ProjectDirectoryLocator.GetProjectDirectory())
.AddJsonFile("integrationtestsettings.json")
.Build();
WebApplicationFactory<Program>? app = new WebApplicationFactory<Program>()
.WithWebHostBuilder(builder =>
{
builder.ConfigureAppConfiguration(cfg => cfg.AddConfiguration(configuration));

builder.ConfigureServices(services =>
{
});
});
_httpClient = app.CreateClient();

我已经检查了配置变量,可以看到从integrationtestsettings.json文件加载的属性。但是,主机仍在使用服务器项目中的appsettings.json运行。

以前,在中。Net5,我正在使用WebHostBuilder,测试设置覆盖了这些设置。

WebHostBuilder webHostBuilder = new();
webHostBuilder.UseStartup<Startup>();
webHostBuilder.ConfigureAppConfiguration(cfg => cfg.AddConfiguration(_configuration));

但是无法使用WebApplicationFactory获取要应用的测试设置。

方法似乎发生了变化。

更改:

builder.ConfigureAppConfiguration(cfg => cfg.AddConfiguration(configuration));

收件人:

builder.UseConfiguraton(configuration);

已经成功了。

builder.ConfigureAppConfiguration,现在它正在配置应用程序(在调用WebApplicationBuilder.Build()之后(,并且创建了WebApplication

你需要";注入";.Build()完成之前的配置。这就是为什么您需要调用UseConfiguraton而不是ConfigureAppConfiguration

最新更新