Позвольте сказать;Я разрабатываю веб-приложение, которое для определенных вещей общается с веб-сервисом RESTful.
Веб-служба RESTful не является сторонней, но разрабатывается параллельно с основным приложением (хорошим примером может служить приложение электронной коммерции и обработчик платежей; или социальная сеть и система единого входа).
В такой системе приемочные (огуречные) или функциональные тесты могут быть выполнены двумя способами:
- Путем отсеивания всех внешних вызовов с использованием библиотеки насмешек на уровне объектов;такие как
Mocha
или JMock
. - Выполняя насмешку на уровне http, используя библиотеки, такие как
webmock
. - Фактически позволяя основному приложению выполнить фактический вызов.
Проблема с #1 и # 2, если API базового приложения изменяется;мои тесты будут проходить успешно, и код будет фактически ломаться, и, следовательно, в первую очередь победит цель тестов.
Проблема с # 3 в том, что я не могу сделать rollback
данных, как набор тестовделает на teardown
.И я параллельно выполняю свои тесты, и, следовательно, если я позволю работе реальных веб-сервисов, я получу такие ошибки, как «имя пользователя взято» или что-то в этом роде.
Итак, вопрос для сообщества заключается в том, что является лучшим методом?