2

Я хочу, чтобы в моих тестах интеграции устанавливалась конкретная строка соединения при запуске теста в среде разработки и в другой строке соединения, когда тестовый запуск выполнялся в промежуточной среде.Как использовать переменную среды ядра asp.net при тестировании с помощью Visual Studio

Когда я не в режиме тестирования, я просто устанавливаю переменную среды на машине, и все работает нормально. но при тестировании я могу использовать UseEnvironment(envX), но тогда он будет envX на всех машинах или не будет использовать этот метод и получить значение по умолчанию (которое является производством).

так, как я могу использовать несколько строк подключения, основанных на среде, на моих тестах интеграции?

ответ

3

Вместо использования UseEnvironment(envX) вы можете установить переменную окружения ASPNETCORE_ENVIRONMENT перед запуском тестов.

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

+0

где я установить переменную окружения, когда я бегу модульного тестирования в Visual Studio? Я запускаю эту команду на cmd, но затем, когда при отладке теста я вижу, что env.name все еще является производством – arielorvits

+1

Я не думаю, что вы можете это сделать, если вы просто запускаете его в Visual Studio. Если вы работаете с консолью или записываете небольшой скрипт, вы можете сначала установить переменную окружения, а затем запустить 'dotnet test'. – henningst

3

Если вы используете IHostingEnvironment проверить среду в тестовой интеграции кода, то вы можете переопределить значение в IHostingEnvironment.EnvironmentName:

//IHostingEnvironment env; 

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

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

Как это помогает мне при выполнении того же теста на нескольких envs? тот же тест должен выполняться иногда на envX, а иногда и на envY – arielorvits

0

Может быть, пока никакого решения не существует, как вы можете видеть here. Я все еще жду других ответов здесь и ответов на эту ссылку.

0

если вы работаете тест Dotnet вы можете установить переменную среды в окне Powershell локально первый

$env:ASPNETCORE_ENVIRONMENT="test" 
dotnet test