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