dam*_*i86 10 mocking ui-testing ios xcode7 xcode-ui-testing
有人试图在新的Xcode 7 UI测试中包含模拟数据吗?
我认为有很多方法可以解决这个问题 - 困难在于Apple故意将UITests设计为完全独立于被测应用程序.也就是说,您可以使用一些钩子来协调应用程序中的逻辑,并在测试中使用逻辑来提供模拟数据或以任何方式改变应用程序的行为.我发现最有用的两个是launchEnvironment和launchArguments.
在您的测试中 - XCUIApplication().launchArguments对应NSProcessInfo.processInfo().arguments于您的应用代码
同样:
 XCUIApplication().launchEnvironment- >NSProcessInfo.processInfo().environment
launchEnvironment是一个直接的字典,而launch参数是一个数组.在测试中,您可以在启动应用程序之前将任何您喜欢的值提供给这些参数中的任何一个:
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 
    }
}
使用此模式,您的伪造/模拟数据将需要是作为应用目标成员包含的文件.
| 归档时间: | 
 | 
| 查看次数: | 1375 次 | 
| 最近记录: |