Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
final class TestURLProtocol: URLProtocol {
override class func canInit(with request: URLRequest) -> Bool {
return true
override class func canonicalRequest(for request: URLRequest) -> URLRequest {
return request
static var loadingHandler: ((URLRequest) -> (HTTPURLResponse, Data?, Error?))?
override func startLoading() {
guard let handler = TestURLProtocol.loadingHandler else {
XCTFail("Loading handler is not set.")
let (response, data, error) = handler(request)
if let data = data {
client?.urlProtocol(self, didReceive: response, cacheStoragePolicy: .notAllowed)
client?.urlProtocol(self, didLoad: data)
else {
client?.urlProtocol(self, didFailWithError: error!)
override func stopLoading() {}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment