2012-04-17 18 views
0

ユニットテストを実行しているときにブレークポイントに到達せず、テストでコードが正しく実行されていないと考えられます。SenTestCaseで非同期ユニットテストが呼び出されない

私の難しさの一部である非同期テストをしようとしています。

testLookupBookが呼び出されるようにテストを設定するにはどうすればいいですか。他のすべてが正しく呼び出されることを期待しています。

私は、テストする関数がヘッダファイルのどこかにあるはずだと推測していますが、私はtestでテストメソッドを開始しました。ここで

は私のヘッダファイルである:私は私のヘッダファイルにメソッドを追加するのを忘れ

- (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"); 
} 

答えて

0

私が好きだろうこの

- (void)testLookupBook { 
    NSDate *fiveSecondsFromNow = [NSDate dateWithTimeIntervalSinceNow:5.0]; 
    [instance lookupBook:(NSString *)@"9780262140874"]; 
    WAIT_WHILE(searchResult == nil, 1.0); 
} 

式が真ではないか、制限時間に達するまでWAIT_WHILE(expressionIsTrue, seconds) -macroが入力を評価します。その下にはNSRunLoopパターンを使用しています。

https://github.com/hfossli/AGWaitForAsyncTestHelper

0

@interface jabBookScanTest : SenTestCase { 
    jabBookScan *instance; 
    NSArray *searchResult; 
} 
@end 

とテストのための実装こちらです。

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

@end 
+0

まったく問題ありません:あなたはここでプロジェクトを見つけることができますか? – karim

関連する問題