如何用Protractor计算隐形物品

时间:2015-12-23 11:31:25

标签: javascript angularjs testing protractor

我可以使用filter这样计算可见项目:

it('should have correct number of visible columns', function () {
  expect(tableHeaders.filter(function (header) {
      return header.isDisplayed()
  }).count()).toBe(6);
});

但我如何更好地计算隐形? 这个不起作用,因为header.isDisplayed()返回一个Promise,而不仅仅是一个布尔值:

it('should have correct number of visible columns', function () {
  expect(tableHeaders.filter(function (header) {
      return !header.isDisplayed()
  }).count()).toBe(6);
});

那么,我应该如何计算最大量的隐形物品?

2 个答案:

答案 0 :(得分:1)

我已经找到了如何将.reduce()用于此目的:

    expect(tableHeaders.reduce(function (acc, header) {
      return header.isDisplayed()
          .then(function (isDisplayed) {
              return acc += !isDisplayed ? 1 : 0;
          })
    }, 0)).toBe(7);

如果项目未显示,我将累加器变量增加1,然后将其返回并与正确的值进行比较。

答案 1 :(得分:0)

reduce()可以在这里使用,但.filter()将是"最主要的量角器方式":

var invisibleTableHeaders = tableHeaders.filter(function (header) {
    return header.isDisplayed().then(function (isDisplayed) {
          return !isDisplayed;
      })
});
expect(invisibleTableHeaders.count()).toBe(7);