Spec-Zone.ru › Angular.js 1.7

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

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

Обзор

Имитация HTTP-бекенда, подходящая для тестирования приложений, использующих $http service.

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

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

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

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

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

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

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

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

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

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

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

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

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

Сброс http-запросов

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

Unit-тестирование с mock $httpBackend

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

// 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...';
    });
  };
}

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

// 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() после определения или ожидания. Если вы предоставите callback как первый параметр к 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 в callback теперь будет иметь свойства с этими ключами, которые содержат значение соответствующей группы в регулярном выражении.

Это также относится к сокращениям 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

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

  • 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–2018 Google, Inc.
Licensed under the Creative Commons Attribution License 4.0.
https://code.angularjs.org/1.7.8/docs/api/ngMock/service/$httpBackend

Spec-Zone.ru

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