自定义NSURLProtocol不会调用canInitWithRequest:

时间:2019-12-17 17:21:48

标签: ios objective-c nsurlsession nsurlprotocol

我已经实现了NSURLProtocol的子类。我需要它来模拟URL响应以进行单元测试。我已经在单元测试的setUp方法中注册了我的课程。

- (void)setUp
{
    [NSURLProtocol registerClass:[RDMockResponseURLProtocol class]];

    [DSMockResponseURLProtocol.mockResponses setObject:[self bigFileResponse]
                                                forKey:[self bigFileURL]];

    <...>
}

我已经重写了NSURLProtocol的类方法canInitWithRequest:及其需要重写的其他方法。

@implementation DSMockResponseURLProtocol

<...>

+ (BOOL)canInitWithRequest:(NSURLRequest *)request {
    return [DSMockResponseURLProtocol.mockResponses.allKeys containsObject:request.URL];
}

很遗憾,canInitWithRequest:没有被调用。

我使用NSURLSession配置为在后台模式下继续执行任务。不是造成问题的原因吗?

sessionConfiguration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:identifier];

请与我分享您的任何想法!在此先感谢[弓]

1 个答案:

答案 0 :(得分:0)

似乎我在文档中找到了答案。

  

您不能将自定义URLProtocol子类与后台会话结合使用。

https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1411050-protocolclasses