【发布时间】:2015-10-02 21:59:56
【问题描述】:
有人尝试在新的 Xcode 7 UI 测试中包含模拟数据?
- 您是否使用过特定的框架?
- 您是如何管理目标的?
【问题讨论】:
标签: ios mocking xcode7 ui-testing xcode-ui-testing
有人尝试在新的 Xcode 7 UI 测试中包含模拟数据?
【问题讨论】:
标签: ios mocking xcode7 ui-testing xcode-ui-testing
我认为有很多方法可以解决这个问题 - 困难在于 Apple 有意将 UITest 设计为完全独立于被测应用程序运行。也就是说,您可以使用一些挂钩来协调应用程序中的逻辑与测试中的逻辑,以提供模拟数据或以任何方式改变应用程序的行为。我发现最有用的两个是launchEnvironment 和launchArguments。
在您的测试中 - XCUIApplication().launchArguments 对应于您的应用代码中的 NSProcessInfo.processInfo().arguments
同样:
XCUIApplication().launchEnvironment -> NSProcessInfo.processInfo().environment
launchEnvironment 是一个简单的字典,而启动参数是一个数组。在您的测试中,您可以在启动应用程序之前将任何您喜欢的值输入到这些参数中:
let app = XCUIApplication()
app.launchEnvironment["-FakedFeedResponse"] = "success.json"
app.launch()
然后在您的应用程序逻辑中,您可以随意打开这些值。比如:
func fetchFeed() -> JSON {
if let fakedJSONFilename = NSProcessInfo.processInfo().environment["-FakedFeedResponse"] {
let fakePayload = fakeDataFileNamed(fakedJSONFilename)
return fakePayload
} else {
//Make network call and return a real JSON payload
}
}
使用此模式,您的伪造/模拟数据将需要包含为应用目标成员的文件。
【讨论】: