Доступ к значениям конфигурации local.settings.json при запуске модульных тестов с использованием MsTest - PullRequest
1 голос
/ 01 ноября 2019

У меня есть функция лазера http триггера, и я вызываю службу в этой функции. В рамках этой службы я обращаюсь к переменным среды, используя

Environment.GetEnvironmentVariable(key, EnvironmentVariableTarget.Process);

Но когда я отлаживаю / запускаю свой тест, значение возвращается как нулевое. Поэтому я попытался установить переменную среды в моем TestClass, как показано ниже:

Environment.SetEnvironmentVariable(key, value, EnvironmentVariableTarget.Process);

После этого он возвращает значение, установленное в моем TestClass. Не могли бы вы помочь мне понять, есть ли какие-либо негативные последствия для этого подхода?

Я использую .netCore 2.2 и функции Azure версии 2

1 Ответ

1 голос
/ 01 ноября 2019

Я не вижу какого-либо негативного влияния на него, поскольку сфера действия ограничена только процессом. Метод **GetEnvironmentVariable(String)** извлекает переменную среды только из блока среды текущего процесса. Это эквивалентно вызову метода GetEnvironmentVariable(String, EnvironmentVariableTarget) с целевым значением EnvironmentVariableTarget.Process.

Любые переменные, добавленные в блок процесса во время выполнения процесса, путем вызова метода SetEnvironmentVariable(String, String) или SetEnvironmentVariable(String, String, EnvironmentVariableTarget)метод с целевым значением EnvironmentVariableTarget.Process. Эти переменные среды сохраняются до тех пор, пока не завершится работа приложения .NET.

ТАК, если вы беспокоитесь, если тестовые данные будут мешать вашему фактическому выполнению, так что это не будет так, как это будет прекращено после выполнения тестового примера. будет сделано.

Но, на мой взгляд, я бы хотел сохранить отдельную переменную среды для целей масштабируемости (между Actuala и для тестовых случаев), так как несколько сред, например, dev, test, staging, могут иметь разные значения теста.

Дополнительная справка:

https://docs.microsoft.com/en-us/dotnet/api/system.environment.getenvironmentvariable?view=netframework-4.8

Надеюсь, это поможет.

...