Iphone Google Mac工具箱:测试[NSURLConnection sendSynchronousRequest:…]

Iphone Google Mac工具箱:测试[NSURLConnection sendSynchronousRequest:…],iphone,nsurlconnection,google-toolbox-for-mac,Iphone,Nsurlconnection,Google Toolbox For Mac,我想知道如何测试同步请求以根据服务器响应断言API客户端的行为。 由于独立于服务器是一种很好的做法(因此测试运行速度很快,不依赖于internet连接),因此我想返回我自己的响应。我不知道怎么做,因为请求是同步的: NSURL *url = [self URL]; NSData *postData = [self postData]; NSMutableURLRequest *downloadRequest = [NSMutableURLRequest requestWithURL:url];

我想知道如何测试同步请求以根据服务器响应断言API客户端的行为。 由于独立于服务器是一种很好的做法(因此测试运行速度很快,不依赖于internet连接),因此我想返回我自己的响应。我不知道怎么做,因为请求是同步的:

NSURL *url = [self URL];
NSData *postData = [self postData];

NSMutableURLRequest *downloadRequest = [NSMutableURLRequest requestWithURL:url];

[downloadRequest setHTTPMethod:@"POST"];
[downloadRequest setHTTPBody:postData];
[downloadRequest setTimeoutInterval:10.0];  
return downloadRequest;

NSURLResponse *response;
NSError *error = nil;
NSData *urlData = [NSURLConnection sendSynchronousRequest:downloadRequest
                    returningResponse:&response
                    error:&error];
你对怎么做有什么建议吗?
例如,我不知道是否可以覆盖NSURLConnection,或者是否应该仅仅为了测试而更改代码。

我不完全理解问题的第一句话。我可以说,您几乎肯定希望使其异步。同步请求将阻止UI,如果需要太长时间,iOS将强制退出应用程序。然后,您的异步请求回调可以查看成功/失败情况,然后使用相同的响应或修改的响应调用代理,或者发布您以前安装的处理程序的通知,再次交换响应或不按您的意愿交换响应。

我猜您指的是“Apple吐出的垃圾”。看起来很有趣,我去看看。不过,不确定这是否有助于测试。应用程序的所有API部分都已经在单独的线程中运行,因此运行新线程不是很有用。