AngularJS Protractor - Как вы проверяете входящий вызов AJAX?
У меня есть кнопка, которая после нажатия посылает AJAX-вызов в Angular's $promise
формат. После успешного входа в систему $scope
переменная изменяется и элемент выглядит так:
<section id="logged-in-section" ng-if="auth.user !== null">
// Section to display if logged in
</section>
отображается. В настоящее время я тестирую вышеупомянутое со следующим:
loginButton.click();
browser.sleep(2000);
expect($("#logged-in-section").isDisplayed()).toBeTruthy();
browser.sleep(2000)
бездействует браузер в течение двух секунд, прежде чем транспортир проверяет, logged-in-section
был отображен. Если я достану browser.sleep(2000)
тест не пройден, поскольку между нажатием кнопки входа в систему и ответом, полученным с сервера, существует задержка.
Каков синтаксис для цепочки кнопки входа в систему expect
заявление, так что транспортир проверяет только #logged-in-section
после $promise
возвращается?
1 ответ
Вы можете сделать это:
loginButton.click().then(function(){
browser.waitForAngular().then(function (){ //this should wait for the angular digest process to finish
expect($("#logged-in-section").isDisplayed()).toBeTruthy();
})
});
или это должно работать для:
loginButton.click().then(function(){
browser.wait(element(by.id("logged-in-section")).isDisplayed);
expect($("#logged-in-section").isDisplayed()).toBeTruthy();
});