Spec-Zone.ru › Angular.js 1.8

Улучшить документацию Просмотреть исходный код $httpBackend

  1. сервис в модуле ngMockE2E

Обзор

Реализация фиктивного HTTP-бекенда, подходящая для тестирования взаимодействия с конечным пользователем или для разработки приложений без бэкенда, использующих сервис $http.

Примечание: Для реализации фиктивного http-бекенда, подходящего для юнит-тестирования, см. мока $httpBackend для юнит-тестирования.

Эта реализация может использоваться для ответа статическими или динамическими ответами через API when и его сокращения (whenGET, whenPOST, и т. д.) и, по желанию, передавать запросы в реальный $httpBackend для определённых запросов (например, для взаимодействия с определёнными удалёнными API или для извлечения шаблонов с веб-сервера).

В отличие от юнит-тестирования, в сценарии тестирования взаимодействия с конечным пользователем или в сценарии, когда приложение разрабатывается с заменой реального бэкенда API на макет, часто желательно, чтобы определённая категория запросов обходила макет и отправляла реальный HTTP-запрос (например, для извлечения шаблонов или статических файлов с веб-сервера). Для настройки бэкенда с таким поведением используйте обработчик запросов passThrough из when вместо respond.

Кроме того, мы не хотим вручную выполнять сброс запросов, смоделированных в макете, как мы делаем при юнит-тестировании. По этой причине $httpBackend для тестирования взаимодействия с конечным пользователем автоматически сбрасывает запросы, смоделированные в макете, что тесно имитирует поведение объекта XMLHttpRequest.

Чтобы настроить приложение для работы с этим HTTP-бекендом, необходимо создать модуль, зависящий от ngMockE2E и модулей вашего приложения, и определить фиктивный бэкенд:

var myAppDev = angular.module('myAppDev', ['myApp', 'ngMockE2E']);
myAppDev.run(function($httpBackend) {
  var 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(); // Requests for templates are handled by the real server
  //...
});

После этого запустите своё приложение с этим новым модулем.

Методы

  • when(method, url, [data], [headers], [keys]);

    Создаёт новое определение бэкэнда.

    Параметры

    Параметр Тип Подробности
    method string

    Метод HTTP.

    url stringRegExpfunction(string)=

    HTTP-адрес или функция, которая получает адрес и возвращает true, если адрес соответствует текущему определению.

    data
    (необязательно)
    stringRegExpfunction(string)

    Тело HTTP-запроса или функция, которая получает строку данных и возвращает true, если данные соответствуют ожидаемым.

    headers
    (необязательно)
    Objectfunction(Object)

    HTTP-заголовки или функция, которая получает объект заголовков и возвращает true, если заголовки соответствуют текущему определению.

    keys
    (необязательно)
    Array

    Массив ключей для присвоения совпадениям в регулярном выражении адреса запроса, описанных в $httpBackend mock.

    Возвращаемое значение

    requestHandler

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

    • respond –
      { function([status,] data[, headers, statusText])
      | function(function(method, url, data, headers, params)}
      
      – Метод respond принимает набор статических данных для возврата или функцию, которая может вернуть массив, содержащий код состояния ответа (число), данные ответа (массив/объект/строка), заголовки ответа (объект) и текст для состояния (строка).
    • passThrough – {function()} – Любой запрос, соответствующий определению бэкэнда с обработчиком passThrough, будет передан реальному бэкэнду (будет выполнен XHR-запрос на сервер).
    • Оба метода возвращают объект requestHandler для возможных перезаписей.
  • whenGET(url, [headers], [keys]);

    Создаёт новое определение бэкэнда для GET-запросов. Дополнительная информация в when().

    Параметры

    Параметр Тип Подробности
    url stringRegExpfunction(string)=

    HTTP-адрес или функция, которая получает адрес и возвращает true, если адрес соответствует текущему определению.

    headers
    (необязательно)
    Objectfunction(Object)

    HTTP-заголовки.

    keys
    (необязательно)
    Array

    Массив ключей для присвоения совпадениям в регулярном выражении адреса запроса, описанных в $httpBackend mock.

    Возвращаемое значение

    requestHandler

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

  • whenHEAD(url, [headers], [keys]);

    Создаёт новое определение бэкэнда для HEAD-запросов. Дополнительная информация в when().

    Параметры

    Параметр Тип Подробности
    url stringRegExpfunction(string)=

    HTTP-адрес или функция, которая получает адрес и возвращает true, если адрес соответствует текущему определению.

    headers
    (необязательно)
    Objectfunction(Object)

    HTTP-заголовки.

    keys
    (необязательно)
    Array

    Массив ключей для присвоения совпадениям в регулярном выражении адреса запроса, описанных в $httpBackend mock.

    Возвращаемое значение

    requestHandler

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

  • whenDELETE(url, [headers], [keys]);

    Создаёт новое определение бэкэнда для DELETE-запросов. Дополнительная информация в when().

    Параметры

    Параметр Тип Подробности
    url stringRegExpfunction(string)=

    HTTP-адрес или функция, которая получает адрес и возвращает true, если адрес соответствует текущему определению.

    headers
    (необязательно)
    Objectfunction(Object)

    HTTP-заголовки.

    keys
    (необязательно)
    Array

    Массив ключей для присвоения совпадениям в регулярном выражении адреса запроса, описанных в $httpBackend mock.

    Возвращаемое значение

    requestHandler

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

  • whenPOST(url, [data], [headers], [keys]);

    Создаёт новое определение бэкэнда для POST-запросов. Дополнительная информация в when().

    Параметры

    Параметр Тип Подробности
    url stringRegExpfunction(string)=

    HTTP-адрес или функция, которая получает адрес и возвращает true, если адрес соответствует текущему определению.

    data
    (необязательно)
    stringRegExpfunction(string)

    Тело HTTP-запроса или функция, которая получает строку данных и возвращает true, если данные соответствуют ожидаемым.

    headers
    (необязательно)
    Objectfunction(Object)

    HTTP-заголовки.

    keys
    (необязательно)
    Array

    Массив ключей для присвоения совпадениям в регулярном выражении адреса запроса, описанных в $httpBackend mock.

    Возвращаемое значение

    requestHandler

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

  • whenPUT(url, [data], [headers], [keys]);

    Создаёт новое определение бэкэнда для PUT-запросов. Дополнительная информация в when().

    Параметры

    Параметр Тип Подробности
    url stringRegExpfunction(string)=

    HTTP-адрес или функция, которая получает адрес и возвращает true, если адрес соответствует текущему определению.

    data
    (необязательно)
    stringRegExpfunction(string)

    Тело HTTP-запроса или функция, которая получает строку данных и возвращает true, если данные соответствуют ожидаемым.

    headers
    (необязательно)
    Objectfunction(Object)

    HTTP-заголовки.

    keys
    (необязательно)
    Array

    Массив ключей для присвоения совпадениям в регулярном выражении адреса запроса, описанных в $httpBackend mock.

    Возвращаемое значение

    requestHandler

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

  • whenPATCH(url, [data], [headers], [keys]);

    Создаёт новое определение бэкэнда для PATCH-запросов. Дополнительная информация в when().

    Параметры

    Параметр Тип Подробности
    url stringRegExpfunction(string)=

    HTTP-адрес или функция, которая получает адрес и возвращает true, если адрес соответствует текущему определению.

    data
    (необязательно)
    stringRegExpfunction(string)

    Тело HTTP-запроса или функция, которая получает строку данных и возвращает true, если данные соответствуют ожидаемым.

    headers
    (необязательно)
    Objectfunction(Object)

    HTTP-заголовки.

    keys
    (необязательно)
    Array

    Массив ключей для присвоения совпадениям в регулярном выражении адреса запроса, описанных в $httpBackend mock.

    Возвращаемое значение

    requestHandler

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

  • whenJSONP(url, [keys]);

    Создает новое определение бэкэнда для запросов JSONP. Дополнительную информацию см. в when().

    Параметры

    Параметр Тип Подробности
    url stringRegExpfunction(string)=

    HTTP-url или функция, которая принимает url и возвращает true, если url соответствует текущему определению.

    keys
    (необязательно)
    Array

    Массив ключей для присвоения совпадениям с регулярными выражениями в url запроса, описанных на странице $httpBackend mock.

    Возвращаемое значение

    requestHandler

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

  • whenRoute(method, url);

    Создает новое определение бэкэнда, которое сравнивает только с запрошенным маршрутом.

    Параметры

    Параметр Тип Подробности
    method string

    HTTP-метод.

    url string

    Строка HTTP-url, которая поддерживает сопоставление с параметрами, заключенными в двоеточия.

    Возвращаемое значение

    requestHandler

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

  • matchLatestDefinitionEnabled([value]);

    Этот метод можно использовать для изменения того, какие смоделированные ответы $httpBackend возвращает при определении их с помощью $httpBackend.when() (и сокращенных методов). По умолчанию $httpBackend возвращает первое определение, которому соответствует запрос. При установке $http.matchLatestDefinitionEnabled(true), будет использоваться последний ответ, который соответствует, т.е. тот, который был добавлен последним.

    hb.when('GET', '/url1').respond(200, 'content', {});
    hb.when('GET', '/url1').respond(201, 'another', {});
    hb('GET', '/url1'); // receives "content"
    
    $http.matchLatestDefinitionEnabled(true)
    hb('GET', '/url1'); // receives "another"
    
    hb.when('GET', '/url1').respond(201, 'onemore', {});
    hb('GET', '/url1'); // receives "onemore"
    

    Это полезно, если у вас есть ответ по умолчанию, который переопределяется внутри конкретных тестов.

    Обратите внимание, что в отличие от методов конфигурации поставщиков, matchLatestDefinitionEnabled() можно изменять даже когда приложение уже запущено.

    Параметры

    Параметр Тип Подробности
    value
    (необязательно)
    Boolean

    Значение для установки, либо true или false. Значение по умолчанию false. Если опущено, вернет текущее значение.

    Возвращаемое значение

    $httpBackendBoolean

    само объект, если используется в качестве установщика, и текущее значение, если используется в качестве получателя.

Пример

© 2010–2020 Google, Inc.
Licensed under the Creative Commons Attribution License 3.0.
https://code.angularjs.org/1.8.2/docs/api/ngMockE2E/service/$httpBackend

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API