我的应用中有以下代码。可以通过在其环境字典中设置其过程信息的“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
是否可以从单元测试中更改应用程序的环境字典?
答案 0 :(得分:7)
NSProcessInfo提供的环境是只读的。您可以使用setenv
c函数设置环境变量(从Swift中正常工作),如下所示:
setenv("MY_KEY", "my value", 1)