AngularJS量角器 - 如何测试AJAX登录呼叫?

时间:2014-07-17 16:53:12

标签: jasmine protractor

我有一个按钮,一旦点击就会以Angular的$promise格式发出一个AJAX调用。登录成功后,会更改$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();
在Proractor检查是否显示browser.sleep(2000)之前,

logged-in-section将浏览器闲置两秒钟。如果我取出browser.sleep(2000),则测试失败,因为在登录按钮和从服务器返回的响应之间存在延迟。

将登录按钮链接到expect语句的语法是什么,以便Protractor仅在返回#logged-in-section后检查$promise

1 个答案:

答案 0 :(得分:0)

你可以这样做:

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();
});