2

我试图通过注入适应URLSessionURLSessionDataTask协议的对象来测试我自己的类。我正在扩展NSURLSessionNSURLSessionDataTask采用这些协议,以便我可以正常使用现有对象,但在单元测试中使用测试对象。

我有以下代码,错误注释:

typealias SessionHandler = (NSData?, NSURLResponse?, NSError?) -> Void

protocol URLSession {

  func dataTaskWithURL(url: NSURL, completionHandler: SessionHandler) -> URLSessionDataTask

}

protocol URLSessionDataTask {

}

// Type 'NSURLSession' does not conform to protocol 'URLSession'
extension NSURLSession : URLSession {}
extension NSURLSessionDataTask : URLSessionDataTask {}

我理解这个错误,我的协议与 . 所暗示的方法不完全匹配NSURLSession。我该如何解决?

4

1 回答 1

0

我最终做的是创建一个协议扩展来创建所需的必要方法NSURLSession

extension NSURLSession : URLSession {
  func dataTaskWithURL(url: NSURL, completionHandler: SessionHandler) -> URLSessionDataTask {
    return dataTaskWithURL(url, completionHandler: completionHandler) as NSURLSessionDataTask
  }
}
于 2015-08-12T21:08:58.060 回答