私は非同期要求のテストを自動化しようとしていますが、テスト機能が待機している間は別のスレッドで何も実行できませんでした。ここ は、テスト関数である:OCUnitはバックグラウンドスレッドのコードに依存できますか? (非同期要求をテストするため)
- (void) testBoxManagerConnexionStatus
{
ControlSender* cs = [ControlSender get];
requestShouldSucceed = YES;
[cs startCheckingReachabilityWithDelegate:self];
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:TIMEOUT_INTERVAL+1.0]];
STAssertTrue(downloadComplete, @"Download should be over by now");
}
私のテストクラスは、コールバックメソッドをこのように実装しています
- (void)controlSender:(ControlSender *)controlSender sentSuccessfullyCode:(FreeboxControl)code
{
if (requestShouldFail) {
STAssertTrue(NO, @"Request should have failed");
}
downloadComplete = YES;
}
- (void)controlSender:(ControlSender *)controlSender couldntSendCode:(FreeboxControl)code details:(NSHTTPURLResponse*)details
{
if (requestShouldSucceed) {
STAssertTrue(NO, @"Request should have succeded");
}
downloadComplete = YES;
}
をしかし、私のいつものコードは何も起こりません別のスレッドで何かを実行しようとするたびに。割り当てられたとき、例えば、NSURLConnectionは、そのデリゲートメソッドを呼び出すことはありません:
m_connexion = [[NSURLConnection alloc] initWithRequest:m_networkRequest delegate:self];
-connectionDidFinishLoading:
も、このような呼び出しのため-connection:didFailWithError:
同じことどちら:
[self performSelectorInBackground:@selector(BG_startCheckingReachabilityWithDelegate:) withObject:delegate];
ナッシングをバックグラウンドで呼び出されますテストを実行する。 同じコードは、テストの外側でうまく動作します。 OCUnitで非同期URLリクエストをテストする方法はありますか?
ありがとうございます。
これは本当に興味深いものです。ありがとう、私はそれを試してみると、これが動作する場合はお知らせください。 – mbritto