如何从单元测试中更改应用程序的NSProcessInfo环境字典?

时间:2015-10-15 03:30:20

标签: ios swift unit-testing xctest

我的应用中有以下代码。可以通过在其环境字典中设置其过程信息的“MY_KEY”键来改变其行为。

func myMethod() {
  var environment = NSProcessInfo.processInfo().environment
  if environment["MY_KEY"] { /* do something /* }
}

我想在单元测试中对此进行测试。问题是在单元测试中更改环境字典不会影响应用程序中的字典。

class MyAppTests: XCTestCase {
  func testMe() {
    var environment = NSProcessInfo.processInfo().environment
    environment["MY_KEY"] = "my value"
    myMethod()
    // The app's environment does not change
  }
end

是否可以从单元测试中更改应用程序的环境字典?

1 个答案:

答案 0 :(得分:7)

NSProcessInfo提供的环境是只读的。您可以使用setenv c函数设置环境变量(从Swift中正常工作),如下所示:

setenv("MY_KEY", "my value", 1)