簡體   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