4

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 Answers 3

4

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;
Sign up to request clarification or add additional context in comments.

1 Comment

how this help me when running the same test on multiple envs? the same test should run sometimes on envX and sometimes on envY
2

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

2 Comments

where I set the environment variable when I'm running unit test in Visual studio? I run this command on cmd, but then when debugging test I can see that env.name is still production
I don't think you can currently do this if you are just running it in Visual Studio. If you are running from the console or write a small script, you can first set the environment variable and then run dotnet test.
0

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

 $env:ASPNETCORE_ENVIRONMENT="test"
 dotnet test

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.