量角器测试失败与angular-growl-v2

时间:2015-04-16 11:48:57

标签: javascript testing protractor end-to-end

我在我的应用中使用angular-growl-v2通知。

他们工作正常,问题来自我的量角器测试。我必须使用TTL(大约6秒),因为这是一项要求。然后我有以下测试:

it('should send a request and notify the user about the result',function(){
    detailPage.verifyEmailtButton.click().then(function(){
      var expectedDiv = element(by.css('.alert-success'));
      expect(expectedDiv).toBeDefined();
    });
  });

但它总是抛出一个错误:

  

NoSuchElementError:找不到使用locator找到的元素:By.cssSelector(" .alert-success")

当TLL为-1时,不会发生这种情况。

有人可以帮忙吗?提前谢谢。

2 个答案:

答案 0 :(得分:1)

angular-growl-2使用$timeout,它与量角器没有很好的配合:量角器在完成与角度过程的同步之前等待超时结束。

因此,当它到达expect呼叫时,超时已经过去,警报不再存在。请查看此文档的等待页面同步部分:

https://github.com/angular/protractor/blob/master/docs/timeouts.md

(此页面与超时相关,您似乎没有遇到过,但由于默认超时为11秒,因此很可能整个过程(包括您的6秒TTL)发生在超时发生)

对于angular-growl-v2,使用$interval代替$timeout,但它目前正在等待测试:

https://github.com/JanStevens/angular-growl-2/pull/85

答案 1 :(得分:0)

单击按钮后

Explicitly wait for the alert to be present

detailPage.verifyEmailtButton.click();

var EC = protractor.ExpectedConditions;

var expectedDiv = element(by.css('.alert-success'));
browser.wait(EC.presenceOf(expectedDiv), 10000, "No alert present");