使用WebApplicationFactory的ASP.NET Core 8集成测试配置

问题描述 投票:0回答:1

我有一个 ASP.NET Core 8 应用程序和一组集成测试。我最近将 Azure 应用程序配置添加到项目中,但是当使用

WebApplicationFactory<Program>
从集成测试运行应用程序时,我希望应用程序从
appsettings.test.json
文件而不是 Azure 获取配置值。

似乎覆盖应用程序配置/服务的标准方法是创建一个派生自

WebApplicationFactory<Program>
的类并覆盖
ConfigureWebHost()
,您可以在其中调用
builder.ConfigureAppConfiguration()
等方法,我可以在其中调用
configuration.Sources.Clear()
来清除现有的配置源然后
configuration.AddJsonFile("appsettings.test.json");

此方法的问题在于,它首先按照正常启动添加 Azure Config,这意味着:

  • 它会因为需要连接而变慢,并且
  • 在 CI/CD 管道中,我没有凭据可以通过 Azure 进行身份验证,因此无论如何它都会失败。

有什么方法可以让我直接为测试上下文指定配置,而不尝试删除已经设置的内容?

c# asp.net-core .net-core asp.net-core-webapi
1个回答
0
投票

无需在

configuration.AddJsonFile("appsettings.test.json")
中添加
ConfigureWebHost
即可让
WebApplicationFactory
拾取特定的应用程序设置文件。您需要做的就是在您要覆盖的
ConfigureWebHost
方法中设置正确的环境。

所以在你的情况下你只需要执行以下操作。不要忘记测试 json 文件必须与您正在测试的应用程序位于同一文件夹中,而不是在测试项目中:

protected override void ConfigureWebHost(IWebHostBuilder builder)
{
  builder.ConfigureTestServices(services =>
  {
  }).UseEnvironment("test");
}
© www.soinside.com 2019 - 2024. All rights reserved.