Я хочу протестировать NSURLSession, но получаю ошибку «Невозможно отправить резюме в абстрактный экземпляр класса NSURLSessionDataTask».
Пример кода в https://github.com/stevencurtis/abstract-instanceofclassNSURLSessionDataTask
Мой HTTP-менеджер работает нормально:
class HTTPManager {
static let shared: HTTPManager = HTTPManager()
private let session: URLSessionProtocol
init(session: URLSessionProtocol = URLSession.shared) {
self.session = session
}
public func get(urlString: String, completionBlock: ((Data?) -> Void)?) {
let url = URL(string: urlString)
if let usableUrl = url {
let request = URLRequest(url: usableUrl)
let task = session.dataTask(with: request, completionHandler: { (data, response, error) in
(completionBlock?(data))!
})
task.resume()
}
}
}
Однако я пытаюсь смоделировать это
class MockURLSession: URLSessionProtocol {
func dataTask(with request: URLRequest, completionHandler: @escaping (Data?, URLResponse?, Error?) -> Void) -> URLSessionDataTask {
return URLSessionDataTask()
}
var searchedURL = URL(string: "asd")
}
И затем создать тест:
func testGetRequest() {
let url = URL(string: "url")
let session = MockURLSession()
let sub = HTTPManager(session: session)
sub.get(urlString: "url", completionBlock: { [weak self] (data: Data?) -> Void in
print ("vc")
}
)
}
Ошибки тестов с: резюме не может быть отправлено наабстрактный экземпляр класса NSURLSessionDataTask ", и я не могу придумать способ обойти эту ошибку!