Google Toolbox для Mac: тестирование [NSURLConnection sendSynchronousRequest: ...] - PullRequest
1 голос
/ 30 марта 2011

Мне интересно, как протестировать синхронный запрос для подтверждения поведения клиента 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, или я должен изменить свой код, только для целей тестирования.

1 Ответ

0 голосов
/ 30 марта 2011

Я не совсем понимаю первое предложение вопроса. Я могу сказать, что вы почти наверняка хотите сделать это асинхронным. Синхронный запрос заблокирует пользовательский интерфейс, и, если это займет слишком много времени, iOS принудительно закроет ваше приложение. Ваши обратные вызовы асинхронного запроса могут затем просмотреть успех / сбой, а затем либо вызвать делегата с тем же или измененным ответом, либо опубликовать уведомление, для которого вы ранее установили обработчики, снова поменять ответ или нет, как вы хотите.

...