Jasmine 量角器/茉莉花:与

Jasmine 量角器/茉莉花:与,jasmine,integration-testing,protractor,Jasmine,Integration Testing,Protractor,我正在为角度代码编写一个量角器测试,它将一个项目添加到使用ng repeat显示的列表中。 我想检查一下,当用户单击一个按钮时,在几百毫秒内,另一项被添加到列表中。 项目的初始计数未知 测试伪代码如下所示: var e = element.all(by.repeater(...)) getButtonPromise().click() // -> XHR to server, which adds item to list expect(e.count()).toBe(XXX) 限制条件

我正在为角度代码编写一个量角器测试,它将一个项目添加到使用ng repeat显示的列表中。 我想检查一下,当用户单击一个按钮时,在几百毫秒内,另一项被添加到列表中。 项目的初始计数未知

测试伪代码如下所示:

var e = element.all(by.repeater(...))
getButtonPromise().click() // -> XHR to server, which adds item to list
expect(e.count()).toBe(XXX)
限制条件:

1在执行单击之前,必须测量项目的初始数量

2预期值为初始值+1

3.期望。。。必须定期运行,直到超时或列表计数达到预期值

4测试剩余部分的控制流必须停止,直到预期。。。决定成功或超时

我尝试过各种方法,但都不管用。 非常感谢您在解决此常见测试模式方面的帮助

var e = element.all(by.repeater(...))

e.count().then(function(oldCount) {
  getButtonPromise().click();
  browser.wait(function() {
    return e.count().then(function(newCount) {
      return newCount === oldCount + 1;
    })
  }, YOUR_TIMEOUT_IN_MILLISECONDS);

  expect(e.count()).toEqual(oldCount + 1); // this is optional because if this isn't true, it would have timed out already.

})