如何在Xcode 7上模拟UITest中的数据?
有人试图用新的Xcode 7 UItesting包含模拟数据?
- 你有没有使用特定的框架?
- 你是如何pipe理目标的?
我认为有很多方法可以解决这个问题 – 难点在于苹果公司有意devise的UITests完全独立于被testing的应用程序。 也就是说,可以使用几个钩子来协调应用程序中的逻辑与testing中的逻辑,以任何方式提供模拟数据或改变应用程序的行为。 我发现最有用的两个是launchEnvironment
和launchEnvironment
。
在你的testing中 – XCUIApplication().launchArguments
NSProcessInfo.processInfo().arguments
对应于你的应用代码中的NSProcessInfo.processInfo().arguments
同样的: XCUIApplication().launchEnvironment
– > NSProcessInfo.processInfo().environment
launchEnvironment是一个简单的字典,而启动参数是一个数组。 在您的testing中,您可以在启动应用程序之前将您喜欢的任何值input到这些参数中的任何一个:
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 } }
使用这种模式,您的伪造/模拟数据将需要作为应用程序目标成员包含的文件。