我试图通过注入适应URLSession
和URLSessionDataTask
协议的对象来测试我自己的类。我正在扩展NSURLSession
和NSURLSessionDataTask
以采用这些协议,以便我可以正常使用现有对象,但在单元测试中使用测试对象。
我有以下代码,错误已注释:
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
所暗示的方法完全匹配。我该如何解决这个问题?
答案 0 :(得分:0)
我最终做的是创建一个协议扩展,创建NSURLSession
所需的必要方法。
extension NSURLSession : URLSession {
func dataTaskWithURL(url: NSURL, completionHandler: SessionHandler) -> URLSessionDataTask {
return dataTaskWithURL(url, completionHandler: completionHandler) as NSURLSessionDataTask
}
}