2012-07-10 20 views
3

需要爲以下代碼進行單元測試,dispatch_async表示代碼不會被應用邏輯序列執行,關於如何使其及時運行的任何想法?像dispatch_async這樣的代碼的單元測試。

謝謝。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{ 
     [AdTracker dosomething]; 
    }); 

回答

2

http://www.mikeash.com/pyblog/friday-qa-2011-07-22-writing-unit-tests.html

+ (BOOL)waitFor2:(finishBlock)block { 
NSTimeInterval timeoutInSeconds = 10.0; 
NSDate* giveUpDate = [NSDate dateWithTimeIntervalSinceNow:timeoutInSeconds]; 

while (!block() && ([giveUpDate timeIntervalSinceNow] > 0)) { 
    NSDate *stopDate = [NSDate dateWithTimeIntervalSinceNow:1.0]; 
    [[NSRunLoop currentRunLoop] runUntilDate:stopDate]; // un-blocking. 
    DLog(@"+++++ %@", [NSDate date]); 
} 

return block(); 

}