2013-05-07 6 views
4

Мое угловое приложение связывается с моим сервером через REST API. Я хочу издеваться над этим API, чтобы быстро развить интерфейс.Как мне высмеять backend в AngularJS?

Есть два подхода, которые я вижу:

  1. Использование ngMockE2E $httpBackend. Для этого необходимо:

    • раскручивается простой статический файловый сервер (например, python -m SimpleHTTPServer)
    • нагрузки углового mocks.js в моем клиенте
    • Настройки макета $httpBackend, чтобы вернуть то, что я хочу.

    Недостатки: Необходимо иметь логику на стороне клиента, которая определяет, использовать ли макет или нет. Кроме того, не издевается над фактическими $ httpRequests, и мы можем запутаться со всеми вызовами flush().

  2. Создайте фактический макет. Например. разверните очень простой сервер node.js, который ответит на актуальным xhr просит.

    Недостатки:?

ngMockE2e $ httpBackend похоже, что другие используют, но я не уверен, почему. Наличие реального (макетного) бэкэнда кажется более простым и менее вероятным причиной ошибок при разработке.

ответ

0

Просто создайте файл .json прямо рядом с вашим index.html. Сделайте свой запрос $http для получения этого json-файла, который содержит данные, возвращаемые вашим backend. Это самый простой способ издеваться над вашим бэкэндом. Конечно, я предполагаю, что вы обслуживаете свое угловое приложение через веб-сервер. Если вы еще не используете веб-сервер, это решение не будет работать.

В процессе производства вы можете просто заменить URL-адрес этого json-файла фактической конечной точкой REST.

+1

Спасибо, но это не позволяет мне тестировать разные типы ответов (403, 502 и т. д.). –

+0

Можете ли вы привести пример?! – svarog

0

У меня была аналогичная проблема, и я начал с простого .json-файла, как предложил ganaraj, но перешел на простой сервер node.js, когда мне нужно было протестировать модификацию данных.

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

0

Ответ подобный вопрос here.

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

0

Для альтернативы более автоматизированной способ бэкэнда, насмехающийся, взгляните на swagger-api-mock, который отлично работает вместе с rest-json. Эти модули вместе могут быть использованы для генерации ответов $ httpBackend: rest-json.js в виде доступа к данным json для http-доступа и данных swagger-api-mock/lib/mock.js как генератор для json mock объектов данных, основанных на определениях swagger (или json schema)