Я создаю приложение с угловым выражением, которое использует длительный опрос, чтобы получать быстрые обновления всякий раз, когда что-то меняется на сервере. Я использую $ ресурс, как это извлечь фактические данные:Как тестировать приложения, которые используют длительный опрос с помощью Protractor
appServices.factory('Data', ['$resource',
function(){
return $resource('', {}, {
query: {"url": …, isArray: false}
});
}]);
Тогда у меня есть служба, которая заботится о долгосрочном опросе: Подождите, загружены данные; храните их где-нибудь; через одну секунду начните следующий длинный цикл опроса:
app.factory(„DataLoader“, [„Data“, "$timeout", function(Data, $timeout) {
return {
loadData: function() {
var parent = this;
var data = Data.query({},
function(result) {
/* do something to the data,
* then start waiting for an update from the server again
*/
$timeout(function() {
parent.loadData();
}, 1000);
}
);
}
};
});
Это работает как шарм.
Тем не менее, я сейчас пытаюсь написать тесты для протранграфа. Проблема в том, что сервер истекает длинные запросы на опрос через 30 секунд, только если никаких изменений в данных нет. Поскольку я жду новых данных в $ timeout, Protractor истекает до того, как будут получены какие-либо результаты.
У меня есть googled последний час, но, похоже, не существует решения, за исключением использования $ interval вместо $ timeout. Это работает в хорошей старой настройке опроса (опрос каждые 3 секунды, получение пустых результатов с сервера, если нет ничего нового). Однако, чтобы этого избежать, я реализовал длительный опрос. $ timeout - это гораздо более разумный вариант для меня.
Можете ли вы дать мне какие-либо советы о том, как успешно использовать Транспортир в этой среде?
Если вы не хотите использовать '$ interval', то _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 'browser.ignoreSynchronization = true'; Не уверен, есть ли другой вариант – Gunderson
Спасибо за подсказку @Gunderson! Я закончил делать именно это, а затем вручную дождался появления элементов DOM с использованием ожидаемых условий. – fjc