如何从单元测试更改应用程序的 NSProcessInfo 环境字典?
How to change app's NSProcessInfo environment dictionary from a unit test?
我的应用程序中有以下代码。它的行为可以通过在其进程信息的 environment 字典中设置 "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
是否可以通过单元测试更改应用程序的环境字典?
NSProcessInfo 提供的环境是只读的。您可以使用 setenv
c 函数设置环境变量(从 Swift 起可以正常工作),如下所示:
setenv("MY_KEY", "my value", 1)
我的应用程序中有以下代码。它的行为可以通过在其进程信息的 environment 字典中设置 "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
是否可以通过单元测试更改应用程序的环境字典?
NSProcessInfo 提供的环境是只读的。您可以使用 setenv
c 函数设置环境变量(从 Swift 起可以正常工作),如下所示:
setenv("MY_KEY", "my value", 1)