1

サーバーの応答に応じて API クライアントの動作をアサートする同期要求をテストする方法を知りたいです。サーバーから独立している (テストが高速に実行され、インターネット接続に依存しない) ことは良い習慣であるため、私自身の応答を返したいと思います。リクエストは同期的であるため、これを行う方法がわかりません:

NSURL *url = [self URL];
NSData *postData = [self postData];

NSMutableURLRequest *downloadRequest = [NSMutableURLRequest requestWithURL:url];

[downloadRequest setHTTPMethod:@"POST"];
[downloadRequest setHTTPBody:postData];
[downloadRequest setTimeoutInterval:10.0];  
return downloadRequest;

NSURLResponse *response;
NSError *error = nil;
NSData *urlData = [NSURLConnection sendSynchronousRequest:downloadRequest
                    returningResponse:&response
                    error:&error];

これを行う方法について何か提案はありますか? たとえば、 NSURLConnection をオーバーライドできるかどうか、またはテスト目的でコードを変更する必要があるかどうかはわかりません。

4

1 に答える 1

0

質問の最初の文を完全には理解していません。ほぼ間違いなく非同期にしたいと言えます。同期リクエストはUIをブロックし、時間がかかりすぎるとiOSがアプリを強制終了します。非同期リクエストコールバックは、成功/失敗を確認してから、同じ応答または変更された応答でデリゲートを呼び出すか、以前にハンドラーをインストールしたという通知を投稿して、応答を再度交換するかどうかを指定できます。

于 2011-03-30T07:07:15.933 に答える