繁体   English   中英

如何控制UIWebView的loadRequest的加载结果?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM