Макет веб-сервиса для iPhone - PullRequest
       3

Макет веб-сервиса для iPhone

2 голосов
/ 16 августа 2010

Я хочу сделать приложение для iPhone, как введение в программирование в ObjC и Cocoa. Я разработчик .net, так что программирование на Mac - это целый новый мир для меня :)

Мое приложение будет общаться с веб-сервисом. Я хочу использовать iCuke в качестве среды тестирования, и я не хочу подключаться к этому веб-сервису каждый раз, когда запускаю набор тестов. Итак, как я могу издеваться над ответом веб-службы для тестирования? Одним из решений может быть использование SoapUI , но, возможно, есть какое-то решение, которое не использует внешние инструменты.

Ответы [ 2 ]

1 голос
/ 16 августа 2010

Я бы написал обертку вокруг вызовов веб-службы в приложении.
Пример в псевдокоде

CallWebService (action, options,...) {
    // Code for connectiong to Webservice
}

Тогда вы просто высмеиваете эту функцию, просто как любую другую функцию

CallWebService (action, options,...) {
    return true;
}

Таким образом, вы можете издеваться над веб-сервисом, не беспокоясь о том, что он является веб-сервисом, подключением к базе данных или чем-то еще. И вы можете сделать так, чтобы он возвращал значение true или что-то еще.

Удачи

UPDATE

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

CallWebService (action, options,...) {
    if TEST_WEBSERVICE_PARAMETER == CORRUPT_XML
        return "<xml><</xmy>";
    else if TEST_WEBSERVICE_PARAMETER == TIME_OUT
        return wait(5000);
    else if TEST_WEBSERVICE_PARAMETER == EMPTY_XML
        return "";
    else if TEST_WEBSERVICE_PARAMETER == REALLY_LONG_XML_RESPONSE
        return generate_xml_response(1000000);
}

И соответствующие тесты:

should_raise_error_on_empty_xml_response_from_webservice() {
    TEST_WEBSERVICE_PARAMETER = EMPTY_XML;
    CallWebService(action, option, ...);
    assert_error_was_raised(EMPTY_RESPONSE_FROM_WEBSERVICE);
    assert_written_in_log(EMPTY_RESPONSE_LOG_MESSAGE);
}
...

И так далее, вы поняли. Обратите внимание, что все мои примеры - это тесты с отрицательным тестом, но это, конечно, можно использовать и для тестирования тестов с положительным тестом.

1 голос
/ 16 августа 2010

Я не уверен, подходит ли мое решение для ваших нужд, но, возможно, мой вклад здесь поможет.Я использую довольно много разных веб-сервисов в своем приложении, все они используют вывод xml, поэтому я сделал для целей тестирования создание файлов mock-xml и внутри своего приложения вместо того, чтобы использовать сам веб-сервис с использованием static test-xmls, помещенного ввеб сервер.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...