Тестирование и ответ асинхронного запроса NSURLConnection с помощью Xcode

Я хотел бы воспользоваться классами и методами тестирования в Xcode, чтобы проверить ответы, которые я получаю от нескольких асинхронных запросов HTTP-сервисов, которые делает мое приложение, чтобы увидеть, правильно ли я получаю и анализирую ожидаемые параметры.

Ответы, которые я получаю, имеют формат JSON, и мое приложение анализирует их для создания пользовательских объектов. Я вызываю службы с помощью объекта, который использует соединение NSURLConnection и реализует протокол NSURLConnectionDelegate для получения ответов. Я не нахожу способа проверить это, так как соответствие моего класса XCTestCase протоколу NSURLConnectionDelegate не работает.

Спасибо


person AppsDev    schedule 21.10.2014    source источник


Ответы (1)


Я бы предположил, что вы неправильно подходите к этому виду теста.

Использование оперативных данных и фактическое выполнение выборки по сети — это не совсем то, что вы тестируете. Вы просто хотите проверить синтаксический анализ возвращаемых данных.

Одним из подходов к этому является использование фреймворка-заглушки, такого как OHHTTPStubs или Nocilla.

Таким образом, вы можете загружать файлы JSON и тестировать синтаксический анализ или даже тестировать различные условия, такие как плохие сети или сетевые ошибки.

Это обеспечивает контролируемую среду для выполнения ваших тестов и является гораздо лучшей идеей, чем фактическое выполнение выборки.

Еще одно преимущество заключается в том, что вы можете писать код для этих тестов, находясь в дороге и без подключения к Интернету :)

person Anorak    schedule 21.10.2014
comment
Спасибо. На самом деле я хотел бы протестировать весь процесс, поскольку ответ служб зависит от данных, которые я им отправляю. - person AppsDev; 21.10.2014
comment
И это то, что вы можете настроить в тестах. Если вы тестируете ответ, который сервер отправляет вам для заданных параметров, то это тест для сервера, а не модульный тест, как вы, кажется, хотите сделать. - person Anorak; 21.10.2014
comment
Да, вы правы, я хочу больше интеграционного теста... какую из фреймворков, на которые вы ссылаетесь, вы бы порекомендовали? - person AppsDev; 21.10.2014
comment
Либо. Раньше я использовал OHHTTPStubs. - person Anorak; 21.10.2014