【发布时间】:2020-07-15 09:53:53
【问题描述】:
我想使用WebApplicationFactory 在我的集成测试中设置环境。默认情况下,env 设置为Development。我的 Web 应用程序工厂的代码如下所示:
public class CustomWebApplicationFactory<TStartup> : WebApplicationFactory<TStartup>
where TStartup : class
{
protected override void ConfigureWebHost(IWebHostBuilder builder)
{
builder.UseSolutionRelativeContentRoot(AppContext.BaseDirectory);
base.ConfigureWebHost(builder);
}
protected override IWebHostBuilder CreateWebHostBuilder()
{
return WebHost.CreateDefaultBuilder()
.UseStartup<TStartup>()
.UseEnvironment("test"); // i want to launch `test` environment while im
// testing my app
}
}
当我开始调试 Startup 类时(当我运行测试时)我仍然得到 Development 环境:
public Startup(IHostEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", false, true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", true)
// env.EnvironmentName is set to 'Development' while i set it to 'test'
// in my WebApplicationFactory
.AddEnvironmentVariables();
Configuration = builder.Build();
}
如何正确设置WebApplicationFactory中的环境?或者也许如何仅在启动时更改测试策略我依赖于appsettings 文件?
【问题讨论】:
-
本次讨论或许对你有帮助:github.com/dotnet/AspNetCore.Docs/issues/12303
标签: c# asp.net-core testing .net-core