単体テストを実行しているときに、ブレークポイントに到達せず、テストでコードが適切に実行されていないと思います。
私は非同期テストを行おうとしていますが、これは私の困難の一部です。
それが呼び出されるようにテストを設定するにはどうすればよいですか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");
}