Улучшить документацию Просмотреть исходный код $httpBackend
- Сервис в модуле ngMock
Обзор
Реализация фейкового HTTP бэкенда, подходящая для тестирования приложений, использующих сервис $http.
Во время тестирования модулей мы хотим, чтобы наши тесты выполнялись быстро и не имели внешних зависимостей, поэтому не нужно отправлять запросы 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 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Сам себя, когда используется как сеттер, и текущее значение, когда используется как геттер
-
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–2020 Google, Inc.
Licensed under the Creative Commons Attribution License 3.0.
https://code.angularjs.org/1.8.2/docs/api/ngMock/service/$httpBackend