如何在 Visual Studio 测试中使用 ASP.NET 核心环境变量

How to use an ASP.NET Core environment variable in testing with Visual Studio

在我的集成测试中,我想在开发环境中运行测试时设置一个特定的连接字符串,在临时环境中运行测试时设置另一个连接字符串。

当我不处于测试模式时,我只是在机器上设置环境变量,一切正常。但在测试中我可以使用 UseEnvironment(envX),但随后它将在所有机器上使用 envX,或者不使用此方法,并使用默认方法(即生产)。

那么,如何在我的集成测试中使用基于环境的多个连接字符串?

您可以在 运行 测试之前设置环境变量 ASPNETCORE_ENVIRONMENT,而不是使用 UseEnvironment(envX)

SET ASPNETCORE_ENVIRONMENT=TestSET ASPNETCORE_ENVIRONMENT=SomeOtherEnvironment

如果您使用 IHostingEnvironment 检查集成测试代码中的环境,那么您可以覆盖 IHostingEnvironment.EnvironmentName 中的值:

//IHostingEnvironment env;

env.EnvironmentName = 'Development';
env.IsDevelopment() // return true;

env.EnvironmentName = 'TEST';
env.IsDevelopment() // return false;
env.IsEnvironment('TEST') // return true;

如果您是 运行 dotnet test,您可以先在本地设置 PowerShell window 中的环境变量:

 $env:ASPNETCORE_ENVIRONMENT="test"
 dotnet test