2013-02-22 87 views
4

我寫了一個OCUnit單元測試用例,它依靠外部web服務來完成。我知道這本身是有爭議的,但是我絕對想要在測試中包含Web服務(無論如何它都在內部服務器上運行)。爲什麼NSURLConnection不能在iOS OCUnit測試用例中工作?

顯然,當作爲SenTestCase的一部分運行時,NSURLConnection無法啓動。該連接不會在所有行開始:

NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self startImmediately:YES]; 

的委託方法沒有被調用。幾乎相同的代碼通常在OCUnit之外運行。

什麼是OCUnit運行時環境阻止它運行?

這不是測試在請求返回前完成:我有NSCondition鎖來處理請求的異步性質。我也嘗試刪除這些,只是在運行循環上旋轉。測試用例繼續執行,但NSURLConnection永遠不會啓動。

如果可能,我寧願不將我的測試遷移到另一個單元測試框架。

+0

我不知道NSCondition如何幫助,除非在另一個線程中運行NSURLConnection。你如何運行運行循環? – 2013-02-22 22:35:55

+0

請參閱http://stackoverflow.com/questions/14868519/tdd-unit-testing-asynchronous-calls/14877427#14877427 – 2013-02-24 23:34:05

+0

@Jon Reid:這不是我的問題的解決方案。問題不在於等待ASynchronous任務完成,而是NSURLConnection無法啓動。 – 2013-02-25 17:36:50

回答

4

我有完全一樣的問題,我用

[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:30]]; 

我之前使用NSCondition解決這個問題,但我想大概鎖定NSURLConnection的的線程。

相關問題