2016-07-24 3 views
0

Я хочу, чтобы модуль тестировал функцию, которая создает/обновляет переменные системной среды. Итак, как я могу проверить вышеуказанные функции с помощью Nunit в C#?Mock System Environment Variable In C#

ответ

1

Я не могу ответить до mocking переменных окружения, вам нужно написать свой собственный класс Environment для этого.

В общем объеме переменных среды доступа/настройки вы можете использовать Environment.GetEnvironmentVariable и Environment.SetEnvironmentVariable.

Например,

Assert.IsEqual("test", Environment.GetEnvironmentVariable("test-var"); 

и для установки,

Environment.SetEnvironmentVariable("test-var", "test"); 
1

Wrap реальные вызовы, которые создают/обновить переменные среды в классе, который может быть введен в зависимость кода. Вам нужны два звонка:

string value = Environment.GetEnvironmentVariable("variableName") 

Environment.SetEnvironmentVariable("variableName", "value"); 

Этот последний всегда принимает значение в качестве значения.

Тогда класс обертка будет выглядеть примерно так:

class MyEnvironment 
{ 
    public string GetVariable(string variableName) 
    { 
     return Environment.GetEnvironmentVariable(variableName); 
    } 

    public void SetVariable(string variableName, string value) 
    { 
     Environment.SetEnvironmentVariable(variableName, value); 
    } 
} 

Затем в наборе тестов впрыснуть фиктивный класс, который имитирует создание/обновление. Это проверит логику вашего кода.

издевались класс будет выглядеть примерно так:

class MockEnvironment 
{ 
    private Dictionary<string, string> _mockEnvironment; 

    public string GetVariable(string variableName) 
    { 
     return _mockEnvironment[variableName]; 
    } 

    public void SetVariable(string variableName, string value) 
    { 
     // Check for entry not existing and add to dictionary 
     _mockEnviroment[variableName] = value; 
    } 
} 

Вам необходимо проверить класс-обертку, чтобы убедиться, что он на самом деле создать переменные окружения/системные обновления, но вам нужно только сделать это когда-то ,

+0

Не могли бы вы привести пример? – VJL