Создание сервера-заглушки для iOS (Mocking NSUrlConnection) - PullRequest
2 голосов
/ 21 марта 2012

Каковы лучшие практики для макетирования ответов сервера (JSON) для приложения для iOS?

Ситуация такова, что один разработчик (не я) создает бэкэнд, и я хочу создать «фиктивный сервер», чтобы я мог начать пользовательское тестирование с псевдоданными, а также для модульных тестов.

Существуют ли какие-либо фреймворки, которые «перехватывают» nsurlconnection, чтобы я мог внедрить свой собственный ответ json, если я не «хочу» обратиться к серверу?В настоящее время я включаю флаг во всех моих методах запроса к серверу и это выглядит ужасно.

Ответы [ 3 ]

2 голосов
/ 22 марта 2012

Для связи с сервером я абстрагируюсь NSURLConnection со своим собственным классом «запрос на обслуживание».Это отделяет мой код от серверной логики и обработки ошибок, но также хорошо, потому что вычеркнуть данные ответа оказывается просто чрезвычайно .Вы можете настроить использование фиктивных данных через конфигурацию или, как упоминает @wkhatch, скомпилировать их условно.

2 голосов
/ 11 декабря 2012

Check Nocillap , одна из самых классных библиотек для разработки приложений для iOS / OSX:

stubRequest(@"POST", @"https://api.example.com/dogs.json").
andReturn(201).
withHeaders(@{@"Content-Type": @"application/json"});

Работает с AFNetworking , что в наши дни огромно.

0 голосов
/ 22 марта 2012

Вы можете определить протокол, сделать так, чтобы ваши зависимые классы использовали протокол в качестве типа, а затем создать несколько разных классов, которые его реализуют;один для реального времени, один для тестирования и т. д. Затем, внутри вашего зависимого контроллера или там, где вам нужно переключиться, просто используйте целевой или конфигурационный пре-процесс, чтобы выбрать, какой из них будет использоваться.При использовании протокола таким способом вы хотите определить его следующим образом:

id<ProtocolName> myServerURLConnectionThing;

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

...