Улучшить эту документациюПросмотреть исходный код$httpBackend
- Сервис в модуле ngMock
Обзор
Реализация фиктивного HTTP-бекенда, подходящая для тестирования приложений, использующих сервис $http.
Во время юнит-тестирования желательно, чтобы тесты выполнялись быстро и не зависели от внешних источников, поэтому не следует отправлять запросы XHR или JSONP на реальный сервер. Все, что нам нужно, — это проверить, был ли отправлен определенный запрос, или же позволить приложению отправлять запросы, отвечать предварительно подготовленными ответами и убедиться, что конечный результат соответствует ожиданиям.
Данную эмуляцию можно использовать для ответа статическими или динамическими ответами с помощью API expect и when и их сокращений (expectGET, whenPOST, и т.д.).
Когда приложение AngularJS нуждается в данных от сервера, оно вызывает сервис $http, который отправляет запрос на реальный сервер с помощью сервиса $httpBackend. С помощью инъекций зависимостей легко инжектировать эмуляцию $httpBackend (имеющую тот же API, что и $httpBackend) и использовать ее для проверки запросов и возврата тестовых данных без отправки запроса на реальный сервер.
Существует два способа указать, какие тестовые данные должны возвращаться как ответы HTTP от эмуляции бэкенда, когда код, подлежащий тестированию, делает запросы HTTP:
-
$httpBackend.expect- определяет ожидаемый запрос -
$httpBackend.when- определяет определение бэкенда
Ожидания запросов против определений бэкенда
Ожидания запросов позволяют делать утверждения о запросах, выполняемых приложением, и определять ответы на эти запросы. Тест завершится неудачей, если ожидаемые запросы не будут выполнены или будут выполнены в неправильном порядке.
Определения бэкенда позволяют определить фиктивный бэкенд для вашего приложения, который не проверяет, был ли выполнен определенный запрос, а просто возвращает обученный ответ, если запрос выполнен. Тест пройдет независимо от того, был ли запрос выполнен во время тестирования.
| Ожидания запросов | Определения бэкенда | |
|---|---|---|
| Синтаксис | .expect(...).respond(...) | .when(...).respond(...) |
| Типичное использование | строгие юнит-тесты | свободные (черного ящика) юнит-тесты |
| Выполнение нескольких запросов | НЕТ | ДА |
| Порядок запросов имеет значение | ДА | НЕТ |
| Требуется запрос | ДА | НЕТ |
| Требуется ответ | необязательно (см. ниже) | ДА |
В тех случаях, когда во время юнит-тестирования указаны как определения бэкенда, так и ожидания запросов, ожидания запросов оцениваются в первую очередь.
Если для ожидания запроса не определен ответ, алгоритм будет искать соответствующий ответ в определениях бэкенда.
Если запрос не соответствует ни одному ожиданию или если для ожидания не определен ответ, определения бэкенда оцениваются в последовательном порядке, чтобы определить, соответствует ли какой-либо из них запросу. Возвращается ответ из первого соответствующего определения.
Очистка HTTP-запросов
Служба $httpBackend, используемая в производственном коде, всегда отвечает на запросы асинхронно. Если мы сохранили это поведение в юнит-тестах, нам пришлось бы создавать асинхронные юнит-тесты, что сложно писать, отслеживать и поддерживать. Но и эмуляция тестирования не может отвечать синхронно; это изменило бы выполнение кода, подлежащего тестированию. По этой причине эмулированный $httpBackend имеет метод flush(), который позволяет тесту явно очистить ожидающие запросы. Это сохраняет асинхронный API бэкенда, позволяя тесту выполняться синхронно.
Юнит-тестирование с эмулированным $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]);
Создаёт новое определение бэкэнда.
Параметры
Параметр Тип Описание method stringМетод HTTP.
url stringRegExpfunction(string)=HTTP URL или функция, которая получает URL и возвращает true, если URL соответствует текущему определению.
data (необязательно)stringRegExpfunction(string)Тело HTTP запроса или функция, которая получает строку данных и возвращает true, если данные соответствуют ожидаемым.
headers (необязательно)Objectfunction(Object)HTTP заголовки или функция, которая получает объект заголовков HTTP и возвращает true, если заголовки соответствуют текущему определению.
keys (необязательно)ArrayМассив ключей, которые будут назначены совпадениям в регулярных выражениях в URL запроса, описанном выше.
Возвращаемое значение
requestHandlerВозвращает объект с методом
respond, который управляет тем, как обрабатывать соответствующий запрос. Вы можете сохранить этот объект для последующего использования и вызватьrespondснова, чтобы изменить способ обработки соответствующего запроса.- respond –
{function([status,] data[, headers, statusText]) | function(function(method, url, data, headers, params)}– Метод respond принимает набор статических данных, которые должны быть возвращены, или функцию, которая может вернуть массив, содержащий код ответа (число), данные ответа (массив/объект/строка), заголовки ответа (объект) и текст для кода статуса (строка). Метод respond возвращает объектrequestHandlerдля возможных переопределений.
- respond –
-
whenGET(url, [headers], [keys]);
Создаёт новое определение бэкэнда для запросов GET. Для получения дополнительной информации см.
when().Параметры
Параметр Тип Описание url stringRegExpfunction(string)=HTTP URL или функция, которая получает URL и возвращает true, если URL соответствует текущему определению.
headers (необязательно)Objectfunction(Object)HTTP заголовки.
keys (необязательно)ArrayМассив ключей, которые будут назначены совпадениям в регулярных выражениях в URL запроса, описанном выше.
Возвращаемое значение
requestHandlerВозвращает объект с методом
respond, который управляет тем, как обрабатывать соответствующий запрос. Вы можете сохранить этот объект для последующего использования и вызватьrespondснова, чтобы изменить способ обработки соответствующего запроса. -
whenHEAD(url, [headers], [keys]);
Создаёт новое определение бэкэнда для запросов HEAD. Для получения дополнительной информации см.
when().Параметры
Параметр Тип Описание url stringRegExpfunction(string)=HTTP URL или функция, которая получает URL и возвращает true, если URL соответствует текущему определению.
headers (необязательно)Objectfunction(Object)HTTP заголовки.
keys (необязательно)ArrayМассив ключей, которые будут назначены совпадениям в регулярных выражениях в URL запроса, описанном выше.
Возвращаемое значение
requestHandlerВозвращает объект с методом
respond, который управляет тем, как обрабатывать соответствующий запрос. Вы можете сохранить этот объект для последующего использования и вызватьrespondснова, чтобы изменить способ обработки соответствующего запроса. -
whenDELETE(url, [headers], [keys]);
Создаёт новое определение бэкэнда для запросов DELETE. Для получения дополнительной информации см.
when().Параметры
Параметр Тип Описание url stringRegExpfunction(string)=HTTP URL или функция, которая получает URL и возвращает true, если URL соответствует текущему определению.
headers (необязательно)Objectfunction(Object)HTTP заголовки.
keys (необязательно)ArrayМассив ключей, которые будут назначены совпадениям в регулярных выражениях в URL запроса, описанном выше.
Возвращаемое значение
requestHandlerВозвращает объект с методом
respond, который управляет тем, как обрабатывать соответствующий запрос. Вы можете сохранить этот объект для последующего использования и вызватьrespondснова, чтобы изменить способ обработки соответствующего запроса. -
whenPOST(url, [data], [headers], [keys]);
Создаёт новое определение бэкэнда для запросов POST. Для получения дополнительной информации см.
when().Параметры
Параметр Тип Описание url stringRegExpfunction(string)=HTTP URL или функция, которая получает URL и возвращает true, если URL соответствует текущему определению.
data (необязательно)stringRegExpfunction(string)Тело HTTP запроса или функция, которая получает строку данных и возвращает true, если данные соответствуют ожидаемым.
headers (необязательно)Objectfunction(Object)HTTP заголовки.
keys (необязательно)ArrayМассив ключей, которые будут назначены совпадениям в регулярных выражениях в URL запроса, описанном выше.
Возвращаемое значение
requestHandlerВозвращает объект с методом
respond, который управляет тем, как обрабатывать соответствующий запрос. Вы можете сохранить этот объект для последующего использования и вызватьrespondснова, чтобы изменить способ обработки соответствующего запроса. -
whenPUT(url, [data], [headers], [keys]);
Создаёт новое определение бэкэнда для запросов PUT. Для получения дополнительной информации см.
when().Параметры
Параметр Тип Описание url stringRegExpfunction(string)=HTTP URL или функция, которая получает URL и возвращает true, если URL соответствует текущему определению.
data (необязательно)stringRegExpfunction(string)Тело HTTP запроса или функция, которая получает строку данных и возвращает true, если данные соответствуют ожидаемым.
headers (необязательно)Objectfunction(Object)HTTP заголовки.
keys (необязательно)ArrayМассив ключей, которые будут назначены совпадениям в регулярных выражениях в URL запроса, описанном выше.
Возвращаемое значение
requestHandlerВозвращает объект с методом
respond, который управляет тем, как обрабатывать соответствующий запрос. Вы можете сохранить этот объект для последующего использования и вызватьrespondснова, чтобы изменить способ обработки соответствующего запроса. -
whenJSONP(url, [keys]);
Создаёт новое определение бэкэнда для запросов JSONP. Для получения дополнительной информации см.
when().Параметры
Параметр Тип Описание url stringRegExpfunction(string)=HTTP URL или функция, которая получает URL и возвращает true, если URL соответствует текущему определению.
keys (необязательно)ArrayМассив ключей, которые будут назначены совпадениям в регулярных выражениях в URL запроса, описанном выше.
Возвращаемое значение
requestHandlerВозвращает объект с методом
respond, который управляет тем, как обрабатывать соответствующий запрос. Вы можете сохранить этот объект для последующего использования и вызватьrespondснова, чтобы изменить способ обработки соответствующего запроса. -
whenRoute(method, url);
Создаёт новое определение бэкэнда, которое сравнивает только с запрошенным маршрутом.
Параметры
Параметр Тип Описание method stringМетод HTTP.
url stringСтрока HTTP URL, которая поддерживает сопоставление параметров с двоеточием.
Возвращаемое значение
requestHandlerВозвращает объект с методом
respond, который управляет тем, как обрабатывать соответствующий запрос. Вы можете сохранить этот объект для последующего использования и вызватьrespondснова, чтобы изменить способ обработки соответствующего запроса. См. #when для получения дополнительной информации.
-
expect(method, url, [data], [headers], [keys]);
Создаёт новое ожидание запроса.
Параметры
Параметр Тип Подробности method stringHTTP-метод.
url stringRegExpfunction(string)=HTTP-URL или функция, которая получает URL и возвращает true, если URL соответствует текущему определению.
data (необязательно)stringRegExpfunction(string)ObjectТело HTTP-запроса или функция, которая получает строку данных и возвращает true, если данные соответствуют ожиданию, или объект, если тело запроса в формате JSON.
headers (необязательно)Objectfunction(Object)HTTP-заголовки или функция, которая получает объект HTTP-заголовков и возвращает true, если заголовки соответствуют текущему ожиданию.
keys (необязательно)ArrayМассив ключей для присвоения совпадениям регулярных выражений в URL запроса, описанном выше.
Возвращаемое значение
requestHandlerВозвращает объект с методом
respond, который управляет обработкой соответствующего запроса. Вы можете сохранить этот объект для дальнейшего использования и вызватьrespondснова, чтобы изменить обработку соответствующего запроса.- respond –
{ function([status,] data[, headers, statusText]) | function(function(method, url, data, headers, params)}– Метод respond принимает набор статических данных для возврата или функцию, которая может возвращать массив, содержащий код состояния ответа (число), данные ответа (массив/объект/строка), заголовки ответа (объект) и текст для кода состояния (строка). Метод respond возвращает объектrequestHandlerдля возможных переопределений.
- respond –
-
expectGET(url, [headers], [keys]);
Создаёт новое ожидание запроса GET. Для получения дополнительной информации см.
expect().Параметры
Параметр Тип Подробности url stringRegExpfunction(string)=HTTP-URL или функция, которая получает URL и возвращает true, если URL соответствует текущему определению.
headers (необязательно)ObjectHTTP-заголовки.
keys (необязательно)ArrayМассив ключей для присвоения совпадениям регулярных выражений в URL запроса, описанном выше.
Возвращаемое значение
requestHandlerВозвращает объект с методом
respond, который управляет обработкой соответствующего запроса. Вы можете сохранить этот объект для дальнейшего использования и вызватьrespondснова, чтобы изменить обработку соответствующего запроса. Для получения дополнительной информации см. раздел #expect. -
expectHEAD(url, [headers], [keys]);
Создаёт новое ожидание запроса HEAD. Для получения дополнительной информации см.
expect().Параметры
Параметр Тип Подробности url stringRegExpfunction(string)=HTTP-URL или функция, которая получает URL и возвращает true, если URL соответствует текущему определению.
headers (необязательно)ObjectHTTP-заголовки.
keys (необязательно)ArrayМассив ключей для присвоения совпадениям регулярных выражений в URL запроса, описанном выше.
Возвращаемое значение
requestHandlerВозвращает объект с методом
respond, который управляет обработкой соответствующего запроса. Вы можете сохранить этот объект для дальнейшего использования и вызватьrespondснова, чтобы изменить обработку соответствующего запроса. -
expectDELETE(url, [headers], [keys]);
Создаёт новое ожидание запроса DELETE. Для получения дополнительной информации см.
expect().Параметры
Параметр Тип Подробности url stringRegExpfunction(string)=HTTP-URL или функция, которая получает URL и возвращает true, если URL соответствует текущему определению.
headers (необязательно)ObjectHTTP-заголовки.
keys (необязательно)ArrayМассив ключей для присвоения совпадениям регулярных выражений в URL запроса, описанном выше.
Возвращаемое значение
requestHandlerВозвращает объект с методом
respond, который управляет обработкой соответствующего запроса. Вы можете сохранить этот объект для дальнейшего использования и вызватьrespondснова, чтобы изменить обработку соответствующего запроса. -
expectPOST(url, [data], [headers], [keys]);
Создаёт новое ожидание запроса POST. Для получения дополнительной информации см.
expect().Параметры
Параметр Тип Подробности url stringRegExpfunction(string)=HTTP-URL или функция, которая получает URL и возвращает true, если URL соответствует текущему определению.
data (необязательно)stringRegExpfunction(string)ObjectТело HTTP-запроса или функция, которая получает строку данных и возвращает true, если данные соответствуют ожиданию, или объект, если тело запроса в формате JSON.
headers (необязательно)ObjectHTTP-заголовки.
keys (необязательно)ArrayМассив ключей для присвоения совпадениям регулярных выражений в URL запроса, описанном выше.
Возвращаемое значение
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 (необязательно)ObjectHTTP-заголовки.
keys (необязательно)ArrayМассив ключей для присвоения совпадениям регулярных выражений в URL запроса, описанном выше.
Возвращаемое значение
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 (необязательно)ObjectHTTP-заголовки.
keys (необязательно)ArrayМассив ключей для присвоения совпадениям регулярных выражений в URL запроса, описанном выше.
Возвращаемое значение
requestHandlerВозвращает объект с методом
respond, который управляет обработкой соответствующего запроса. Вы можете сохранить этот объект для дальнейшего использования и вызватьrespondснова, чтобы изменить обработку соответствующего запроса.
-
expectJSONP(url, [keys]);
Создаёт новое ожидание запроса для запросов JSONP. Дополнительную информацию см. в
expect().Параметры
Параметр Тип Подробности url stringRegExpfunction(string)=HTTP-адрес или функция, которая получает адрес и возвращает true, если адрес соответствует текущему определению.
keys (необязательно)ArrayМассив ключей для присвоения совпадениям регулярных выражений в адресе запроса, описанном выше.
Возвращаемое значение
requestHandlerВозвращает объект с методом
respond, который контролирует обработку соответствующего запроса. Вы можете сохранить этот объект для дальнейшего использования и вызватьrespondснова, чтобы изменить обработку соответствующего запроса. -
expectRoute(method, url);
Создаёт новое ожидание запроса, которое сравнивает только с запрошенным маршрутом.
Параметры
Параметр Тип Подробности method stringHTTP-метод.
url stringСтрока HTTP-адреса, которая поддерживает сопоставление параметров с двоеточием.
Возвращаемое значение
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.6.9/docs/api/ngMock/service/$httpBackend