我正在尝试模拟我的URLSession实例,在研究 StackOverflow 后,我发现一种方法是创建一个模拟的 URLSessionDataTask 并调用完成处理程序resume():
class URLSessionDataTaskMock: URLSessionDataTask {
private let closure: () -> Void
init(closure: @escaping () -> Void) {
self.closure = closure
}
override func resume() {
closure()
}
override func cancel() {
closure()
}
}
class URLSessionMock: URLSession {
typealias CompletionHandler = (Data?, URLResponse?, Error?) -> Void
var data: Data?
var error: Error?
override func dataTask(
with _: URLRequest,
completionHandler: @escaping CompletionHandler
) -> URLSessionDataTask {
let data = self.data
let error = self.error
return URLSessionDataTaskMock {
completionHandler(data, nil, error)
}
}
}
Run Code Online (Sandbox Code Playgroud)
我面临的问题是URLSessionDataTask.init从 iOS 13 开始已被弃用:
'init()' 在 iOS 13.0 中已弃用:请使用 -[NSURLSession dataTaskWithRequest:] 或其他 NSURLSession 方法来创建实例
是否有更新的方法来实现相同的目标?
| 归档时间: |
|
| 查看次数: |
1848 次 |
| 最近记录: |