Улучшить документацию Просмотреть исходный код $httpBackend
- сервис в модуле ngMockE2E
Реализация фейкового HTTP бэкэнда, подходящая для end-to-end тестирования или разработки приложений без бэкэнда, использующих сервис $http.
Примечание: Для реализации фейкового HTTP бэкэнда, подходящей для юнит-тестирования, см. мока $httpBackend для юнит-тестирования.
Данная реализация может быть использована для ответа с помощью статических или динамических ответов через API when и его сокращения (whenGET, whenPOST, и т. д.) и, по желанию, пропускать запросы к реальному $httpBackend для определённых запросов (например, для взаимодействия с определёнными удалёнными API или для получения шаблонов с веб-сервера).
В отличие от юнит-тестирования, в сценарии end-to-end тестирования или в случае, когда приложение разрабатывается с заменой реального бэкэнда на мок, часто желательно, чтобы определённая категория запросов обходила мок и выполняла реальный HTTP запрос (например, для получения шаблонов или статических файлов с веб-сервера). Для настройки бэкэнда с таким поведением используйте обработчик запросов passThrough объекта when вместо respond.
Кроме того, мы не хотим вручную сбрасывать запросы, смоделированные моком, как это делается во время юнит-тестирования. По этой причине e2e $httpBackend автоматически сбрасывает запросы, смоделированные моком, точно имитируя поведение объекта XMLHttpRequest.
Для настройки приложения для работы с этим HTTP бэкэндом, необходимо создать модуль, который зависит от ngMockE2E и ваших модулей приложения и определяет фейковый бэкэнд:
myAppDev = angular.module('myAppDev', ['myApp', 'ngMockE2E']);
myAppDev.run(function($httpBackend) {
phones = [{name: 'phone1'}, {name: 'phone2'}];
// returns the current list of phones
$httpBackend.whenGET('/phones').respond(phones);
// adds a new phone to the phones array
$httpBackend.whenPOST('/phones').respond(function(method, url, data) {
var phone = angular.fromJson(data);
phones.push(phone);
return [200, phone, {}];
});
$httpBackend.whenGET(/^\/templates\//).passThrough();
//...
});
После этого запустите ваше приложение с помощью этого нового модуля.
Методы
-
when(method, url, [data], [headers]);
Создаёт новое определение бэкенда.
Параметры
Param Type Details method stringHTTP-метод.
url stringRegExpfunction(string)HTTP-url или функция, которая получает url и возвращает true, если url соответствует текущему определению.
data (optional)stringRegExpТело HTTP-запроса.
headers (optional)Objectfunction(Object)HTTP-заголовки или функция, которая получает объект HTTP-заголовка и возвращает true, если заголовки соответствуют текущему определению.
Возвращает
requestHandlerВозвращает объект с методами
respondиpassThrough, которые управляют обработкой совпавшего запроса. Вы можете сохранить этот объект для дальнейшего использования и вызватьrespondилиpassThroughснова, чтобы изменить способ обработки совпавшего запроса.- respond –
{function([status,] data[, headers, statusText]) | function(function(method, url, data, headers)}– Метод respond принимает набор статических данных для возврата или функцию, которая может вернуть массив, содержащий статус ответа (число), данные ответа (строка), заголовки ответа (объект) и текст для статуса (строка). - passThrough –
{function()}– Любой запрос, соответствующий определению бэкенда с обработчикомpassThrough, будет передан на реальный бэкенд (будет выполнен запрос XHR к серверу). - Оба метода возвращают объект
requestHandlerдля возможных перезаписей.
- respond –
-
whenGET(url, [headers]);
Создаёт новое определение бэкенда для GET-запросов. Для получения дополнительной информации см.
when().Параметры
Param Type Details url stringRegExpfunction(string)HTTP-url или функция, которая получает url и возвращает true, если url соответствует текущему определению.
headers (optional)Objectfunction(Object)HTTP-заголовки.
Возвращает
requestHandlerВозвращает объект с методами
respondиpassThrough, которые управляют обработкой совпавшего запроса. Вы можете сохранить этот объект для дальнейшего использования и вызватьrespondилиpassThroughснова, чтобы изменить способ обработки совпавшего запроса. -
whenHEAD(url, [headers]);
Создаёт новое определение бэкенда для HEAD-запросов. Для получения дополнительной информации см.
when().Параметры
Param Type Details url stringRegExpfunction(string)HTTP-url или функция, которая получает url и возвращает true, если url соответствует текущему определению.
headers (optional)Objectfunction(Object)HTTP-заголовки.
Возвращает
requestHandlerВозвращает объект с методами
respondиpassThrough, которые управляют обработкой совпавшего запроса. Вы можете сохранить этот объект для дальнейшего использования и вызватьrespondилиpassThroughснова, чтобы изменить способ обработки совпавшего запроса. -
whenDELETE(url, [headers]);
Создаёт новое определение бэкенда для DELETE-запросов. Для получения дополнительной информации см.
when().Параметры
Param Type Details url stringRegExpfunction(string)HTTP-url или функция, которая получает url и возвращает true, если url соответствует текущему определению.
headers (optional)Objectfunction(Object)HTTP-заголовки.
Возвращает
requestHandlerВозвращает объект с методами
respondиpassThrough, которые управляют обработкой совпавшего запроса. Вы можете сохранить этот объект для дальнейшего использования и вызватьrespondилиpassThroughснова, чтобы изменить способ обработки совпавшего запроса. -
whenPOST(url, [data], [headers]);
Создаёт новое определение бэкенда для POST-запросов. Для получения дополнительной информации см.
when().Параметры
Param Type Details url stringRegExpfunction(string)HTTP-url или функция, которая получает url и возвращает true, если url соответствует текущему определению.
data (optional)stringRegExpТело HTTP-запроса.
headers (optional)Objectfunction(Object)HTTP-заголовки.
Возвращает
requestHandlerВозвращает объект с методами
respondиpassThrough, которые управляют обработкой совпавшего запроса. Вы можете сохранить этот объект для дальнейшего использования и вызватьrespondилиpassThroughснова, чтобы изменить способ обработки совпавшего запроса. -
whenPUT(url, [data], [headers]);
Создаёт новое определение бэкенда для PUT-запросов. Для получения дополнительной информации см.
when().Параметры
Param Type Details url stringRegExpfunction(string)HTTP-url или функция, которая получает url и возвращает true, если url соответствует текущему определению.
data (optional)stringRegExpТело HTTP-запроса.
headers (optional)Objectfunction(Object)HTTP-заголовки.
Возвращает
requestHandlerВозвращает объект с методами
respondиpassThrough, которые управляют обработкой совпавшего запроса. Вы можете сохранить этот объект для дальнейшего использования и вызватьrespondилиpassThroughснова, чтобы изменить способ обработки совпавшего запроса. -
whenPATCH(url, [data], [headers]);
Создаёт новое определение бэкенда для PATCH-запросов. Для получения дополнительной информации см.
when().Параметры
Param Type Details url stringRegExpfunction(string)HTTP-url или функция, которая получает url и возвращает true, если url соответствует текущему определению.
data (optional)stringRegExpТело HTTP-запроса.
headers (optional)Objectfunction(Object)HTTP-заголовки.
Возвращает
requestHandlerВозвращает объект с методами
respondиpassThrough, которые управляют обработкой совпавшего запроса. Вы можете сохранить этот объект для дальнейшего использования и вызватьrespondилиpassThroughснова, чтобы изменить способ обработки совпавшего запроса. -
whenJSONP(url);
Создаёт новое определение бэкенда для JSONP-запросов. Для получения дополнительной информации см.
when().Параметры
Param Type Details url stringRegExpfunction(string)HTTP-url или функция, которая получает url и возвращает true, если url соответствует текущему определению.
Возвращает
requestHandlerВозвращает объект с методами
respondиpassThrough, которые управляют обработкой совпавшего запроса. Вы можете сохранить этот объект для дальнейшего использования и вызватьrespondилиpassThroughснова, чтобы изменить способ обработки совпавшего запроса.
© 2010–2017 Google, Inc.
Licensed under the Creative Commons Attribution License 4.0.
https://code.angularjs.org/1.3.20/docs/api/ngMockE2E/service/$httpBackend