【发布时间】:2021-12-10 21:29:12
【问题描述】:
感谢这个答案:Integration test and hosting ASP.NET Core 6.0 without Startup class
我已经能够使用 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();
我检查了配置变量,可以看到从我的 integrartiontestsettings.json 文件加载的属性。但是,主机仍在使用服务器项目中的 appsettings.json 运行。
以前,在 .Net5 中,我使用的是 WebHostBuilder,这些设置被测试设置覆盖。
WebHostBuilder webHostBuilder = new();
webHostBuilder.UseStartup<Startup>();
webHostBuilder.ConfigureAppConfiguration(cfg => cfg.AddConfiguration(_configuration));
但无法使用 WebApplicationFactory 获取要应用的测试设置。
【问题讨论】:
标签: asp.net-core integration-testing asp.net-core-webapi .net-6.0