【发布时间】:2018-07-31 21:37:54
【问题描述】:
我正在使用 XCTest 框架为 IOS 编写测试用例。一旦网络调用完成,我们如何等待网络调用并开始执行。
目前,我正在使用 sleep() 等待。但是,这不是最好的方法。
那么,有没有其他办法呢?
【问题讨论】:
标签: ios xctest ios-ui-automation xctestcase
我正在使用 XCTest 框架为 IOS 编写测试用例。一旦网络调用完成,我们如何等待网络调用并开始执行。
目前,我正在使用 sleep() 等待。但是,这不是最好的方法。
那么,有没有其他办法呢?
【问题讨论】:
标签: ios xctest ios-ui-automation xctestcase
阅读文档here。
func testDownloadWebData() {
// Create an expectation for a background download task.
let expectation = XCTestExpectation(description: "Download apple.com home page")
// Create a URL for a web page to be downloaded.
let url = URL(string: "https://apple.com")!
// Create a background task to download the web page.
let dataTask = URLSession.shared.dataTask(with: url) { (data, _, _) in
// Make sure we downloaded some data.
XCTAssertNotNil(data, "No data was downloaded.")
// Fulfill the expectation to indicate that the background task has finished successfully.
expectation.fulfill()
}
// Start the download task.
dataTask.resume()
// Wait until the expectation is fulfilled, with a timeout of 10 seconds.
wait(for: [expectation], timeout: 10.0)
}
【讨论】:
func expectation(for predicate: NSPredicate, evaluatedWith object: Any, handler: XCTNSPredicateExpectation.Handler? = nil) -> XCTestExpectation,它会返回如上述示例代码中所等待的期望值。