2016-07-24 84 views

回答

1

我不能回答儘可能多的環境變量環境變量,您將不得不編寫自己的Environment類。

在訪問/設置環境變量的一般範圍中,可以使用Environment.GetEnvironmentVariableEnvironment.SetEnvironmentVariable

例如,

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

和設置,

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

換行創建/更新的類,它可以是依賴注入到你的代碼中的環境變量,真正的電話。您需要的兩個呼叫是:

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