自定义 NSURLProtocol 不会调用 canInitWithRequest:
A custom NSURLProtocol doesn't invoke canInitWithRequest:
我已经实现了 NSURL 协议的子class。我需要它来模拟单元测试的 URL 响应。我已经在单元测试的 setUp 方法中注册了我的 class。
- (void)setUp
{
[NSURLProtocol registerClass:[RDMockResponseURLProtocol class]];
[DSMockResponseURLProtocol.mockResponses setObject:[self bigFileResponse]
forKey:[self bigFileURL]];
<...>
}
我已经覆盖了 NSURLProtocol 的 class 方法 canInitWithRequest: 和其他需要覆盖的方法。
@implementation DSMockResponseURLProtocol
<...>
+ (BOOL)canInitWithRequest:(NSURLRequest *)request {
return [DSMockResponseURLProtocol.mockResponses.allKeys containsObject:request.URL];
}
不幸的是 canInitWithRequest: 没有被调用。
我使用 NSURLSession 配置为在后台模式下继续执行任务。这不是导致问题的原因吗?
sessionConfiguration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:identifier];
请与我分享您的任何想法!提前致谢[鞠躬]
看来我在文档中找到了答案
You cannot use custom URLProtocol subclasses in conjunction with background sessions.
https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1411050-protocolclasses
我已经实现了 NSURL 协议的子class。我需要它来模拟单元测试的 URL 响应。我已经在单元测试的 setUp 方法中注册了我的 class。
- (void)setUp
{
[NSURLProtocol registerClass:[RDMockResponseURLProtocol class]];
[DSMockResponseURLProtocol.mockResponses setObject:[self bigFileResponse]
forKey:[self bigFileURL]];
<...>
}
我已经覆盖了 NSURLProtocol 的 class 方法 canInitWithRequest: 和其他需要覆盖的方法。
@implementation DSMockResponseURLProtocol
<...>
+ (BOOL)canInitWithRequest:(NSURLRequest *)request {
return [DSMockResponseURLProtocol.mockResponses.allKeys containsObject:request.URL];
}
不幸的是 canInitWithRequest: 没有被调用。
我使用 NSURLSession 配置为在后台模式下继续执行任务。这不是导致问题的原因吗?
sessionConfiguration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:identifier];
请与我分享您的任何想法!提前致谢[鞠躬]
看来我在文档中找到了答案
You cannot use custom URLProtocol subclasses in conjunction with background sessions.
https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1411050-protocolclasses