如何在单元测试NSURLConnection中正确设置RunLoop?

时间:2009-07-30 18:58:43

标签: iphone unit-testing

我正在使用Google Toolbox for Mac中提供的单元测试工具,我想要对涉及NSURLConnections的一些代码进行单元测试。我相信如果我想要能够做到这一点,我需要设置自己的NSRunLoop。

设置这样的运行循环的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

我能想到的唯一原因就是你想要对实际的异步连接进行功能测试。这将非常脆弱,并且会减慢测试包的速度。

更好的方法是编写NSURLConnection's delegate methods实施的单元测试,例如connection:didFinishLoading:(成功案例)和connection:didFailWithError:(针对错误案例)

我通常会设置示例响应值并验证我的委托是否正确处理它们。例如:

    NSString *responseJSON = @"{\"remove\": [123,432], \"new\": [1,2]}";
    NSData *responseBytes = [responseJSON dataUsingEncoding:NSUTF8StringEncoding];

    // in requestHandler, data would have been set by calls to connection:didReceiveData:
    [requestHandler setData:responseBytes];

    [requestHandler connectionDidFinishLoading:nil];

    // set expectations here for what you'll do with the response
    ...