$httpBackend.flush() должен вызывать каждый тест: Jasmin-AngularJs Unit Test
Мой вопрос очень прост в отличие
afterEach (function () {
$httpBackend.verifyNoOutstandingExpectation ();
$httpBackend.verifyNoOutstandingRequest ();
});
Зачем $httpBackend.flush()
не может быть размещен внутри afterEach(function(){}
?? Потому что, когда у меня есть несколько тестовых случаев, каждый раз мне нужно это вызывать.
describe("test1", function(){
it('1', function(){
$httpBackend.flush()
})
it('2', function(){
$httpBackend.flush()
})
it('3', function(){
$httpBackend.flush()
})
})
Даже я пытался поставить $httpBackend.flush()
внутри после каждого блока, но я начал получать сообщение об ошибке "Ошибка: время ожидания - асинхронный обратный вызов не был вызван в течение времени ожидания, указанного в jasmine.DEFAULT_TIMEOUT_INTERVAL.".
Есть ли какой-то другой способ, которым я могу иметь только один блок, который будет автоматически выполняться после каждой функции для $httpBackend.flush()
Спасибо
1 ответ
$httpBackend.flush
следует вызывать в ваших тестах, а не после теста. Это часть теста, поэтому не имеет смысла выполнять его после теста.
flush
имитирует отправку вашего запроса на сервер, после чего ваш возможный httpBackend.expectXX
метод либо провалится, либо пройдет. Есть и другие условия, которые вы можете проверить.
Если вы хотите написать вспомогательный метод, чтобы избежать его постоянного вызова, вы можете написать что-то вроде этого, например:
function executeRequestAndFlush(requestToExecute) {
requestToExecute();
$httpBackend.flush();
}