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

Posted

技术标签:

【中文标题】如何从单元测试中更改应用程序的 NSProcessInfo 环境字典?【英文标题】:How to change app's NSProcessInfo environment dictionary from a unit test? 【发布时间】:2015-10-15 03:30:20 【问题描述】:

我的应用中有以下代码。可以通过在其进程信息的环境字典中设置“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】:

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

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

【讨论】:

以上是关于如何从单元测试中更改应用程序的 NSProcessInfo 环境字典?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xcode 7 中动态更改单元测试的目标?

如何测试我的数据是不是更改? (Vue JS、Jest、单元测试)

ServiceStack - 检查单元测试中的 WSDL 更改

如何对 NSCoding 进行单元测试?

如何从 IDE 或构建脚本中对 Flex 应用程序进行单元测试?

从 VS6 移植到 VS2008 时在不寻常的架构中使用单元测试?