Улучшить эту документацию Просмотреть исходный код $httpBackend
- сервис в модуле ngMock
Обзор
Имитация HTTP-бекенда, подходящая для тестирования приложений, использующих $http service.
Во время тестирования мы хотим, чтобы наши тесты выполнялись быстро и не зависели от внешних ресурсов, поэтому не нужно отправлять запросы 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 stringHTTP-метод.
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для возможных перезаписей.
- respond –
-
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 stringHTTP-метод.
url stringСтрока HTTP-адреса, поддерживающая сопоставление параметров с двоеточием.
Возвращаемое значение
requestHandlerВозвращает объект с методом
respond, который управляет обработкой соответствующего запроса. Вы можете сохранить этот объект для последующего использования и повторно вызватьrespond, чтобы изменить обработку соответствующего запроса. Для получения дополнительной информации см.when. -
expect(method, url, [data], [headers], [keys]);
Создаёт новое ожидание запроса.
Параметры
Параметр Тип Подробности method stringHTTP-метод.
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для возможных перезаписей.
- respond –
-
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 stringHTTP-метод.
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