为什么';iOS OCUnit测试用例中的NSURL连接工作?
我已经编写了一个OCUnit单元测试用例,它依赖于外部web服务来完成。我知道这本身是有争议的,但我确实希望在测试中包含web服务(它无论如何都在内部服务器上运行) 显然,NSURLConnection在作为SenTestCase的一部分运行时无法启动。线路根本没有启动连接:为什么';iOS OCUnit测试用例中的NSURL连接工作?,ios,nsurlconnection,ocunit,Ios,Nsurlconnection,Ocunit,我已经编写了一个OCUnit单元测试用例,它依赖于外部web服务来完成。我知道这本身是有争议的,但我确实希望在测试中包含web服务(它无论如何都在内部服务器上运行) 显然,NSURLConnection在作为SenTestCase的一部分运行时无法启动。线路根本没有启动连接: NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self startImmediatel
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self startImmediately:YES];
没有调用任何委托方法。几乎相同的代码通常在OCUnit之外运行
什么是OCUnit运行时环境阻止了它的运行
并不是在请求返回之前测试就完成了:我有NSCondition锁来处理请求的异步性质。我也尝试过移除这些,只是在运行循环中旋转。测试用例继续执行,但NSURLConnection从未启动
如果可能的话,我宁愿不将我的测试迁移到另一个单元测试框架。我有完全相同的问题,我使用
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:30]];
我以前使用过NSCondition,但我认为它可能会锁定NSUrlConnection的线程。我不确定NSCondition有何帮助,除非在另一个线程中运行NSUrlConnection。你是如何运行run循环的?请看@Jon Reid:这不是我问题的解决方案。问题不是等待异步任务完成,而是NSURLConnection无法启动。@TC:NSCondition锁只是在依赖NSURLConnection有机会完成(甚至启动)之前阻止当前线程退出测试。