Objective c SenTestCase未调用异步单元测试

Objective c SenTestCase未调用异步单元测试,objective-c,ios5,asynchronous,sentestingkit,Objective C,Ios5,Asynchronous,Sentestingkit,当我运行单元测试时,我没有到达断点,并且我认为测试没有正确运行我的代码 我正在尝试做一个异步测试,这是我困难的一部分 我如何设置测试以便调用testLookupBook,因为我希望这将导致正确调用其他所有内容 我猜想要测试的函数应该在头文件中的某个地方,但我确实用test开始了我的测试方法 这是我的头文件: @interface jabBookScanTest : SenTestCase { jabBookScan *instance; NSArray *searchResult

当我运行单元测试时,我没有到达断点,并且我认为测试没有正确运行我的代码

我正在尝试做一个异步测试,这是我困难的一部分

我如何设置测试以便调用testLookupBook,因为我希望这将导致正确调用其他所有内容

我猜想要测试的函数应该在头文件中的某个地方,但我确实用test开始了我的测试方法

这是我的头文件:

@interface jabBookScanTest : SenTestCase {
    jabBookScan *instance;
    NSArray *searchResult;
}
@end
测试的实现如下所示:

- (void)MethodNameToCallBack:(jabBookScan *)manager 
            resultFromServer:(NSArray *)s {
    searchResult = s;
}

- (BOOL)waitForCompletion:(NSTimeInterval)timeoutSecs {
    NSDate *timeoutDate = [NSDate dateWithTimeIntervalSinceNow:timeoutSecs];
    BOOL done = false;
    do {
        [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:timeoutDate];
        if([timeoutDate timeIntervalSinceNow] < 0.0)
            break;
    } while (!done);

    return done;
}

- (void)testLookupBook {
   NSDate *fiveSecondsFromNow = [NSDate dateWithTimeIntervalSinceNow:5.0];
   [instance lookupBook:(NSString *)@"9780262140874"];
   [[NSRunLoop currentRunLoop] runUntilDate:fiveSecondsFromNow];
   STAssertTrue([self waitForCompletion:90.0], @"Failed to get any results in time");
}

我忘了将该方法添加到头文件中

@interface jabBookScanTest : SenTestCase<jabBookScanDelegate> {
    jabBookScan *instance;
    NSArray *searchResult;
}
- (void) testLookupBook;

@end
我想要这个

- (void)testLookupBook {
   NSDate *fiveSecondsFromNow = [NSDate dateWithTimeIntervalSinceNow:5.0];
   [instance lookupBook:(NSString *)@"9780262140874"];
   WAIT_WHILE(searchResult == nil, 1.0); 
}
WAIT_whileexpressionisrue,seconds宏将计算输入,直到表达式为非真或达到时间限制。它下面使用的是nsrunlop模式。您可以在此处找到该项目: