2013-05-29 4 views
1

Текущая реализация У меня есть подкласс AFHTTPClient и класс сопровождающего менеджера, который обрабатывает соединение с помощью API. Поскольку приложение будет использоваться в тех местах, где невозможно обеспечить сетевое подключение, я хочу написать некоторые модульные тесты вокруг кода, который обрабатывает изменение в достижении сети.afhttpclient unit тестирование изменений в достижении сети

Я внедрил setReachabilityStatusChangeBlock и хочу убедиться, что это вызвано и ведет себя корректно.

Кто-нибудь знаком с имитацией изменения в достижении сети, которое будет использоваться при модульном тестировании? В настоящее время я использую Kiwi для модульного тестирования и OHHTTPStubs для имитации данных, возвращаемых с webservice.

Каков обычный способ тестирования этих ситуаций?

ответ

0

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

EDIT: если у вас есть класс, который теперь обрабатывает Reachability - вы должны создать новый класс с тем же именем, те же методы/свойства и, возможно, некоторые новые методы, которые позволят внешнему агенту сказать, что специальный класс «притворяется» «что-то изменилось. Поэтому вместо реального события достижимости этот класс имеет вызов -(void) fakeNetworkStatus:(BOOL)nowUp, который вы используете. Таким образом, код тестового жгута теперь взаимодействует с поддельным классом Reachability (который, конечно же, не включен в модульные тесты).

EDIT2: было еще несколько мыслей об этом. У вас могут быть дублированные файлы реализации, но Xcode фактически не поддерживает несколько файлов интерфейса. То, что я недавно сделал, это создать новую конфигурацию ReleaseForUnitTest, где я определил «ЕДИНИЦЫ ИСПЫТАНИЙ». Теперь я мог бы предоставить блоки прототипов кода или метода, которые были предназначены только для модульного тестирования. Используя это, вы можете иметь два файла реализации и один файл интерфейса.

+0

Приятно слышать, что вы тестируете это в своем приложении. Можете ли вы предоставить какой-то код, демонстрирующий, как вы используете отдельный класс для тестирования? –