2011-07-11 13 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 
} 

しかしNSOperationwaitUntilAllOperationsAreFinishedを指定するにもかかわらず、実行が完了する前にテストが終了します。

操作が完了する前にテストが終了しないようにするにはどうすればよいですか?

答えて

12

setUpではなく、操作をキューに追加した後にwaitUntilAllOperationsAreFinishedに電話する必要があります。