2013-08-22 226 views
0

我想測試一個使URL請求的方法。在NSURLConnectionDelegate方法收到迴應時,我保存迴應。我真正想測試的邏輯是響應是否已保存。單元測試NSURLConnectionDelegate方法

如何測試NSURLConnectionDelegate方法?

方法我想測試:

- (void) getProfilePictureURL :(NSString *)fbId 
{ 
    //to get picture URL 
    NSString *urlString = [NSString stringWithFormat:@"https://graph.facebook.com/%@/picture?type=large", fbId]; 
    NSURL *url = [NSURL URLWithString:urlString]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:url]; 
    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 

    if (!connection) 
    { 
     NSLog(@"error while starting the connection"); 
    } 
} 

// NSURLConnectionDelegate method 
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
{ 
    // Save response in user defaults 
} 
+0

檢查響應是否保存在userdefault中?那就是你可以識別數據被保存的地方。 –

+0

我知道,但只有在連接委託被調用並且代碼被執行後,我才能測試它。我如何檢查該代表是否被調用? – Geek

+0

抱歉,但我不明白你的情況。你想在保存響應之前或保存響應之後檢查它? –

回答

0

的NSURLConnection的類沒有任何自己的方法來返回HTTP響應代碼,以便把404作爲一個成功的響應 - 我想這是作爲連接,並返回了一些內容(404頁面)。

查看響應是否爲200 OK或404 NOT FOUND的技巧是將NSURLResponse強制轉換爲NSHTTPURLResponse,然後使用該類方法查找http響應代碼。

注意:如果建立了連接,委託將被確定地調用。你應該檢查一下是否沒有連接,然後你應該做什麼。

+0

我在委託方法中有一些代碼,我想測試該代碼。所以我只能測試一次代理被調用並且代碼被執行。 – Geek

+0

是的,沒錯。 –

+0

這就是如何做到這一點的問題?意味着如何等待代表被調用? – Geek