2011-07-11 44 views
5

我想測試一個NSOperation的子類。我試圖做這在我的SenTestCase子類:單元測試NSOperation?

- (void)setUp { 
    [super setUp]; 

    _importQueue = [[NSOperationQueue alloc] init]; 

    [_importQueue setMaxConcurrentOperationCount:1]; 
    [_importQueue waitUntilAllOperationsAreFinished]; 
} 

- (void)tearDown { 
    [_importQueue release]; 

    [super tearDown]; 
} 

- (void)testSomeImport { 
    ImportOperation *op = [[ImportOperation alloc] initWithFile:...]; 
    [_importQueue addOperation:op]; 
    [op setDelegate:self]; 
    [op release]; 
} 

- (void)opDidFinish:(ImportOperation *)op {  // ImportOperation delegate method 
    // Not getting called 
} 

但是測試結束前NSOperation執行完畢,儘管指定waitUntilAllOperationsAreFinished

如何在手術完成前阻止測試完成?

回答

12

將操作添加到隊列後,您不需要在setUp中調用waitUntilAllOperationsAreFinished