[英]How to control the loading result of UIWebView's loadRequest?
我有两个测试,取决于loadRequest方法的成功和失败状态(某些代码需要在委托方法中进行验证)。
我想验证委托方法中的代码,而无需在没有连接互联网的情况下实际打开网络视图。 我该如何实现?
非常感谢
编辑:
也许是UIWebView的模拟对象?
只需使用AFNetworking并按如下所示进行设置即可:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:@"http://example.com/resources.json" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
然后,您可以知道加载是否成功。 如果您的网站始终返回200状态代码,则只需在成功代码块中添加if / then块。
OCMock是一个Objective-C 模拟框架,允许对类进行完全模拟 ,对对象进行部分模拟 ,以及期望和方法存根。
要模拟UIWebView,您只需要做
id webViewMock = [OCMockObject mockForClass:[UIWebView class]];
然后,您可以设置期望:
[[[webViewMock expect] andDo:^(NSInvocation *) {
// Call your failure or success block
}] someMethodWithArgs:OCMOCK_ANY];
并将您的模拟程序注入可以拦截正确呼叫的位置。
你也应该打电话
[webViewMock verify];
确保调用了预期的方法
我已经制作了一个符合UIWebViewDelegate的对象并将其设置为UIWebView的委托,代码类似于以下内容:
@interface MyObject : Object <UIWebViewDelegate>
...
@end
...
MyObject myObject = [[MyObject alloc] init];
webView.delegate = myObject;
我可以手动触发委托方法:
[myObject webView:webView didFailLoadWithError:mockError];
[myObject webViewDidFinishLoad:webView];
当然,webView是一个模拟对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.