我想测试一个NSOperation
子类。我尝试在我的SenTestCase
子类中执行此操作:
- (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
完成执行之前完成。
在操作完成之前如何防止测试完成的任何想法?
答案 0 :(得分:14)
将操作添加到队列后,您需要调用waitUntilAllOperationsAreFinished
,而不是setUp
。