单元测试NSURLConnectionDelegate方法

问题描述:

我想测试一个使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

抱歉,但我不明白你的情况。你想在保存响应之前或保存响应之后检查它? –

的NSURLConnection的类没有任何自己的方法来返回HTTP响应代码,以便把404作为一个成功的响应 - 我想这是作为连接,并返回了一些内容(404页面)。

查看响应是否为200 OK或404 NOT FOUND的技巧是将NSURLResponse强制转换为NSHTTPURLResponse,然后使用该类方法查找http响应代码。

注意:如果建立了连接,委托将被确定地调用。你应该检查一下是否没有连接,然后你应该做什么。

+0

我在委托方法中有一些代码,我想测试该代码。所以我只能测试一次代理被调用并且代码被执行。 – Geek

+0

是的,没错。 –

+0

这就是如何做到这一点的问题?意味着如何等待代表被调用? – Geek