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

13k views Asked by At

In my integration tests, I want to set a specific connection string when the test runs in a development environment, and another connection string when the test runs in the staging environment.

When I am not in testing mode, I simply set the environment variable on the machine, and all work OK. But on testing I can use UseEnvironment(envX), but then it'll be envX on all machines, or not use this method, and get the default one (which is production).

So, how can I use multiple connection strings, environment based, in my integration tests?

3

There are 3 answers

2
henningst On BEST ANSWER

Instead of using UseEnvironment(envX) you could set the environment variable ASPNETCORE_ENVIRONMENT before running the tests.

I.e. SET ASPNETCORE_ENVIRONMENT=Test and SET ASPNETCORE_ENVIRONMENT=SomeOtherEnvironment

1
Set On

If you use IHostingEnvironment to check the environment in integration test code, then you may override value in IHostingEnvironment.EnvironmentName:

//IHostingEnvironment env;

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

env.EnvironmentName = 'TEST';
env.IsDevelopment() // return false;
env.IsEnvironment('TEST') // return true;
0
Ricky Keane On

If you are running dotnet test, you can set the environment variable in your PowerShell window locally first:

 $env:ASPNETCORE_ENVIRONMENT="test"
 dotnet test