2011-07-11 20 views
5

Me gustaría probar una subclase NSOperation. He intentado hacer esto en mi SenTestCase subclase:Unit Test 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 
} 

Pero las pruebas acabados antes de la NSOperation terminado de ejecutarse, a pesar de que especifica waitUntilAllOperationsAreFinished.

Alguna idea de cómo evitar que la prueba termine antes de que mi operación se complete?

Respuesta

12

Debe llamar al waitUntilAllOperationsAreFinished después de agregar la operación a la cola, no en setUp.