Можно ли позвонить $httpbackend.flush();
только в том случае, если есть какой-либо ожидающий запроса? Так что я никогда не получит
Error: Unflushed requests: 1,2,3,...,n
Или
Error: No pending request to flush !
Можно ли позвонить $httpbackend.flush();
только в том случае, если есть какой-либо ожидающий запроса? Так что я никогда не получит
Error: Unflushed requests: 1,2,3,...,n
Или
Error: No pending request to flush !
Согласно documentation есть более $http.pendingRequests
свойство можно использовать. Что-то, как это будет работать:
if($http.pendingRequests.length > 0) {
$httpBackend.flush();
}
Я не уверен, что она с ужасно хорошей идеей, но это должно сделать это.
Я думаю, вам следует организовать ваши тесты, чтобы не использовать какие-либо внутренние тесты «если». Почему? Чтобы это было просто и легко понять, что на самом деле проверено, «если» дает возможность пройти тест, пока он не пройдет.
Напишите отдельную тестовую функцию для проверки, если в API не поступает запрос.
Подробнее о шаблоне AAA (Arrange Act Assert) в тестировании, это поможет вам.
В некоторых случаях решение, если запрос сделан или нет, является детальностью реализации. Тест не должен предполагать, что происходит в реализации – hansmaad
Если вы не ожидаете каких-либо запросов, вы можете поместить вызов в http.flush(n)
в блок try-catch, игнорируя исключение.
http.whenGet(/* .. */).respond(/*..*/); // maybe implementation needs some data
service.doSomething();
try { http.flush(99); } // resolve all the possible requests my service might have to do
catch(e) {}
expect(service.isAwesome).toBe(true);
Нет, это не работает – Stevik