Spec-Zone.ru › Angular.js 1.8

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

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

Обзор

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

Примечание: Для реализации фейкового HTTP бэкенда, подходящего для end-to-end тестирования или разработки без бэкенда, см. модель e2e $httpBackend.

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

Эта модель может использоваться для ответа статическими или динамическими ответами через expect и when api и их сокращения (expectGET, whenPOST, и т.д.).

Когда приложение AngularJS нуждается в данных с сервера, оно вызывает сервис $http, который отправляет запрос на реальный сервер, используя сервис $httpBackend. С помощью инъекции зависимостей легко ввести заглушку $httpBackend (у которой такой же API, как у $httpBackend) и использовать её для проверки запросов и ответа тестовыми данными без отправки запроса на реальный сервер.

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

  • $httpBackend.expect - указывает ожидание запроса
  • $httpBackend.when - указывает определение бэкенда

Ожидания запросов против определений бэкенда

Ожидания запросов позволяют делать утверждения о запросах, выполняемых приложением, и определять ответы на эти запросы. Тест завершится неудачей, если ожидаемые запросы не будут выполнены или будут выполнены не в правильном порядке.

Определения бэкенда позволяют определить фейковый бэкенд для вашего приложения, который не утверждает, был ли отправлен конкретный запрос, а просто возвращает подготовленный ответ, если запрос выполнен. Тест пройдет, независимо от того, был ли запрос выполнен во время тестирования.

Ожидания запросов Определения бэкенда
Синтаксис .expect(...).respond(...) .when(...).respond(...)
Типичное использование строгие модульные тесты свободное (черное ящик) модульное тестирование
Выполнение нескольких запросов НЕТ ДА
Порядок запросов важен ДА НЕТ
Необходим запрос ДА НЕТ
Необходим ответ необязательно (см. ниже) ДА

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

Если для ожидания запроса не определён ответ, алгоритм будет искать подходящий ответ в определениях вашего бэкенда.

Если запрос не совпал ни с одним ожиданием, или ожидание не имеет определённого ответа, определения бэкенда оцениваются в последовательном порядке, чтобы проверить, совпадает ли какой-либо из них с запросом. Возвращается ответ из первого совпавшего определения.

Очистка HTTP запросов

Служба $httpBackend, используемая в продакшене, всегда отвечает на запросы асинхронно. Если мы сохранили это поведение в модульном тестировании, нам пришлось бы создавать асинхронные модульные тесты, которые трудно писать, отслеживать и поддерживать. Но и тестовая заглушка не может отвечать синхронно; это изменило бы выполнение кода, подлежащего тестированию. По этой причине фейковая служба $httpBackend имеет метод flush() который позволяет тесту явно очистить ожидающие запросы. Это сохраняет асинхронный API бэкенда, позволяя тесту выполняться синхронно.

Модульное тестирование с mock $httpBackend

Следующий код демонстрирует, как настроить и использовать мок бэкенд при модульном тестировании контроллера. Сначала мы создаём контроллер, который мы тестируем:

// The module code
angular
  .module('MyApp', [])
  .controller('MyController', MyController);

// The controller code
function MyController($scope, $http) {
  var authToken;

  $http.get('/auth.py').then(function(response) {
    authToken = response.headers('A-Token');
    $scope.user = response.data;
  }).catch(function() {
    $scope.status = 'Failed...';
  });

  $scope.saveMessage = function(message) {
    var headers = { 'Authorization': authToken };
    $scope.status = 'Saving...';

    $http.post('/add-msg.py', message, { headers: headers } ).then(function(response) {
      $scope.status = '';
    }).catch(function() {
      $scope.status = 'Failed...';
    });
  };
}

Теперь мы настраиваем мок бэкенд и создаём спецификации тестов:

// testing controller
describe('MyController', function() {
   var $httpBackend, $rootScope, createController, authRequestHandler;

   // Set up the module
   beforeEach(module('MyApp'));

   beforeEach(inject(function($injector) {
     // Set up the mock http service responses
     $httpBackend = $injector.get('$httpBackend');
     // backend definition common for all tests
     authRequestHandler = $httpBackend.when('GET', '/auth.py')
                            .respond({userId: 'userX'}, {'A-Token': 'xxx'});

     // Get hold of a scope (i.e. the root scope)
     $rootScope = $injector.get('$rootScope');
     // The $controller service is used to create instances of controllers
     var $controller = $injector.get('$controller');

     createController = function() {
       return $controller('MyController', {'$scope' : $rootScope });
     };
   }));


   afterEach(function() {
     $httpBackend.verifyNoOutstandingExpectation();
     $httpBackend.verifyNoOutstandingRequest();
   });


   it('should fetch authentication token', function() {
     $httpBackend.expectGET('/auth.py');
     var controller = createController();
     $httpBackend.flush();
   });


   it('should fail authentication', function() {

     // Notice how you can change the response even after it was set
     authRequestHandler.respond(401, '');

     $httpBackend.expectGET('/auth.py');
     var controller = createController();
     $httpBackend.flush();
     expect($rootScope.status).toBe('Failed...');
   });


   it('should send msg to server', function() {
     var controller = createController();
     $httpBackend.flush();

     // now you don’t care about the authentication, but
     // the controller will still send the request and
     // $httpBackend will respond without you having to
     // specify the expectation and response for this request

     $httpBackend.expectPOST('/add-msg.py', 'message content').respond(201, '');
     $rootScope.saveMessage('message content');
     expect($rootScope.status).toBe('Saving...');
     $httpBackend.flush();
     expect($rootScope.status).toBe('');
   });


   it('should send auth header', function() {
     var controller = createController();
     $httpBackend.flush();

     $httpBackend.expectPOST('/add-msg.py', undefined, function(headers) {
       // check if the header was sent, if it wasn't the expectation won't
       // match the request and the test will fail
       return headers['Authorization'] === 'xxx';
     }).respond(201, '');

     $rootScope.saveMessage('whatever');
     $httpBackend.flush();
   });
});

Динамические ответы

Вы определяете ответ на запрос, вызывая respond() после определения или ожидания. Если вы передадите **обратный вызов** в качестве первого параметра respond(callback), то вы сможете динамически генерировать ответ на основе свойств запроса.

Функция callback должна иметь вид function(method, url, data, headers, params).

Параметры запроса

По умолчанию, параметры запроса в URL-адресах парсятся в объект params. Поэтому URL-адрес запроса /list?q=searchstr&orderby=-name установит params в {q: 'searchstr', orderby: '-name'}.

Сопоставление параметров с помощью регулярных выражений

Если ожидание или определение использует **регулярное выражение** для соответствия URL, вы можете предоставить массив **ключей** через аргумент params. Индекс каждого **ключа** в массиве будет соответствовать индексу **группы** в **регулярном выражении**.

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

Это также применяется к сокращённым методам when и expect.

$httpBackend.expect('GET', /\/user\/(.+)/, undefined, undefined, ['id'])
  .respond(function(method, url, data, headers, params) {
    // for requested url of '/user/1234' params is {id: '1234'}
  });

$httpBackend.whenPATCH(/\/user\/(.+)\/article\/(.+)/, undefined, undefined, ['user', 'article'])
  .respond(function(method, url, data, headers, params) {
    // for url of '/user/1234/article/567' params is {user: '1234', article: '567'}
  });

Сопоставление запросов маршрутов

Для дополнительного удобства доступны сокращения whenRoute и expectRoute . Эти методы предлагают сопоставление URL пути с использованием двоеточия, игнорируя строку запроса и завершающие слэши. Это позволяет создавать объявления, подобные тому, как конфигурируются маршруты приложения с $routeProvider. Поскольку эти методы преобразуют URL определения в регулярные выражения, порядок объявлений важен. В сочетании с анализом параметров запроса можно сделать следующее:

$httpBackend.whenRoute('GET', '/users/:id')
  .respond(function(method, url, data, headers, params) {
    return [200, MockUserList[Number(params.id)]];
  });

$httpBackend.whenRoute('GET', '/users')
  .respond(function(method, url, data, headers, params) {
    var userList = angular.copy(MockUserList),
      defaultSort = 'lastName',
      count, pages, isPrevious, isNext;

    // paged api response '/v1/users?page=2'
    params.page = Number(params.page) || 1;

    // query for last names '/v1/users?q=Archer'
    if (params.q) {
      userList = $filter('filter')({lastName: params.q});
    }

    pages = Math.ceil(userList.length / pagingLength);
    isPrevious = params.page > 1;
    isNext = params.page < pages;

    return [200, {
      count:    userList.length,
      previous: isPrevious,
      next:     isNext,
      // sort field -> '/v1/users?sortBy=firstName'
      results:  $filter('orderBy')(userList, params.sortBy || defaultSort)
                  .splice((params.page - 1) * pagingLength, pagingLength)
    }];
  });

Методы

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

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

    Параметры

    Param Type Details
    method string

    HTTP-метод.

    url stringRegExpfunction(string)=

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

    data
    (optional)
    stringRegExpfunction(string)

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

    headers
    (optional)
    Objectfunction(Object)

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

    keys
    (optional)
    Array

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

    Возвращает

    requestHandler

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

    • respond –
      {function([status,] data[, headers, statusText])
      | function(function(method, url, data, headers, params)}
      
      – Метод respond принимает набор статических данных для возврата или функцию, которая может вернуть массив, содержащий код ответа (число), данные ответа (массив|объект|строка), заголовки ответа (объект), текстовое сообщение состояния HTTP (строка) и состояние XMLHttpRequest (строка: complete, error, timeout или abort). Метод respond возвращает объект requestHandler для возможных перезаписей.
  • 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() можно изменить даже когда приложение уже запущено.

    Параметры

    Param Type Details
    value
    (optional)
    Boolean

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

    Возвращает

    $httpBackendBoolean

    Сам себя, когда используется как сеттер, и текущее значение, когда используется как геттер

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

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

    Параметры

    Param Type Details
    url stringRegExpfunction(string)=

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

    headers
    (optional)
    Objectfunction(Object)

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

    keys
    (optional)
    Array

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

    Возвращает

    requestHandler

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

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

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

    Параметры

    Param Type Details
    url stringRegExpfunction(string)=

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

    headers
    (optional)
    Objectfunction(Object)

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

    keys
    (optional)
    Array

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

    Возвращает

    requestHandler

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

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

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

    Параметры

    Param Type Details
    url stringRegExpfunction(string)=

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

    headers
    (optional)
    Objectfunction(Object)

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

    keys
    (optional)
    Array

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

    Возвращает

    requestHandler

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

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

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

    Параметры

    Param Type Details
    url stringRegExpfunction(string)=

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

    data
    (optional)
    stringRegExpfunction(string)

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

    headers
    (optional)
    Objectfunction(Object)

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

    keys
    (optional)
    Array

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

    Возвращает

    requestHandler

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

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

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

    Параметры

    Param Type Details
    url stringRegExpfunction(string)=

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

    data
    (optional)
    stringRegExpfunction(string)

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

    headers
    (optional)
    Objectfunction(Object)

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

    keys
    (optional)
    Array

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

    Возвращает

    requestHandler

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

  • whenJSONP(url, [keys]);

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

    Параметры

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

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

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

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

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

    requestHandler

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

  • whenRoute(method, url);

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

    Параметры

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

    HTTP-метод.

    url string

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

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

    requestHandler

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

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

    Создаёт новое ожидание запроса.

    Параметры

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

    HTTP-метод.

    url stringRegExpfunction(string)=

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

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

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

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

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

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

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

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

    requestHandler

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

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

    Создаёт новое ожидание запроса GET. Для получения дополнительной информации см. expect().

    Параметры

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

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

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

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

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

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

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

    requestHandler

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

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

    Создаёт новое ожидание запроса HEAD. Для получения дополнительной информации см. expect().

    Параметры

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

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

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

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

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

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

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

    requestHandler

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

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

    Создаёт новое ожидание запроса DELETE. Для получения дополнительной информации см. expect().

    Параметры

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

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

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

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

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

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

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

    requestHandler

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

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

    Создаёт новое ожидание запроса POST. Для получения дополнительной информации см. expect().

    Параметры

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

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

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

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

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

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

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

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

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

    requestHandler

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

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

    Создаёт новое ожидание запроса для PUT-запросов. Дополнительную информацию см. в expect().

    Параметры

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

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

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

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

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

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

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

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

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

    requestHandler

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

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

    Создаёт новое ожидание запроса для PATCH-запросов. Дополнительную информацию см. в expect().

    Параметры

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

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

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

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

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

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

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

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

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

    requestHandler

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

  • expectJSONP(url, [keys]);

    Создаёт новое ожидание запроса для JSONP-запросов. Дополнительную информацию см. в expect().

    Параметры

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

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

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

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

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

    requestHandler

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

  • expectRoute(method, url);

    Создаёт новое ожидание запроса, сравнивающее только с запрошенным маршрутом.

    Параметры

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

    HTTP-метод.

    url string

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

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

    requestHandler

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

  • flush([count], [skip]);

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

    Если ожидающих запросов для очистки нет, когда вызывается этот метод, будет выброшено исключение (так как это обычно признак ошибки программирования).

    Параметры

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

    Количество ответов для очистки. Если не определено/равно null, будут очищены все ожидающие запросы (начиная после skip).

    skip
    (необязательно)
    number

    Количество ожидающих запросов для пропуска. Например, значение 5 пропустит первые 5 ожидающих запросов и начнёт очистку с 6-го.

    (по умолчанию: 0)

  • verifyNoOutstandingExpectation();

    Проверяет, что все запросы, определенные с помощью API expect, были выполнены. Если какой-либо из запросов не был выполнен, verifyNoOutstandingExpectation выбросит исключение.

    Обычно этот метод вызывается после каждого тестового случая, утверждающего запросы, с помощью "afterEach".

    afterEach($httpBackend.verifyNoOutstandingExpectation);
    
  • verifyNoOutstandingRequest();

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

    Обычно этот метод вызывается после каждого тестового случая, утверждающего запросы, с помощью "afterEach".

    afterEach($httpBackend.verifyNoOutstandingRequest);
    
  • resetExpectations();

    Сбрасывает все ожидания запросов, но сохраняет все определения бэкенда. Обычно resetExpectations вызывается во время многофазного теста, когда вы хотите повторно использовать тот же экземпляр подделки $httpBackend.

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

Spec-Zone.ru

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