我想在我的功能测试项目中使用 IHostingEnvironment
和 ConfigurationBuilder
,以便根据环境使用不同的配置集运行功能测试。我想使用下面的代码:
public IConfigurationRoot ConfigureConfiguration(IHostingEnvironment hostingEnvironment)
{
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{hostingEnvironment.EnvironmentName}.json", true)
.AddEnvironmentVariables();
return builder.Build();
}
我想要一个 appSettings.json
和 appSettings.Production.json
文件来指向我在生产环境中的功能测试。这可能吗?如何实现?我需要一个 IHostingEnvironment
的实例。
最佳答案
您可以通过几个步骤在测试项目中使用 ConfigurationBuilder
。我认为您不需要 IHostingEnvironment
接口(interface)本身。
首先,将两个 NuGet 包添加到您的项目中,它们具有 ConfigurationBuilder
扩展方法:
"dependencies": {
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final"
}
其次,将您想要的环境变量放入测试项目的属性中:
然后就可以在测试项目中创建自己的构建器了:
private readonly IConfigurationRoot _configuration;
public BuildConfig()
{
var environmentName = Environment.GetEnvironmentVariable("Hosting:Environment");
var config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{environmentName}.json", true)
.AddEnvironmentVariables();
_configuration = config.Build();
}
如果您想使用完全相同的设置文件(而不是副本),那么您需要添加一个路径。
关于c# - 在测试项目中使用 ASP.NET Core 的 ConfigurationBuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36943484/