Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用量角器计算不可见项_Javascript_Angularjs_Testing_Protractor - Fatal编程技术网

Javascript 如何使用量角器计算不可见项

Javascript 如何使用量角器计算不可见项,javascript,angularjs,testing,protractor,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); }); 但是我怎样才能更好地计算无形的呢? 这个函数不能作为头函数使用。isDisplayed()

我可以使用
filter
对可见的项目进行计数,如下所示:

it('should have correct number of visible columns', function () {
  expect(tableHeaders.filter(function (header) {
      return header.isDisplayed()
  }).count()).toBe(6);
});
但是我怎样才能更好地计算无形的呢? 这个函数不能作为
头函数使用。isDisplayed()
返回一个承诺,而不仅仅是一个布尔值:

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

那么,我应该如何用最量角器的方式计算不可见的项目呢?

我已经想出了如何使用这个方法:

    expect(tableHeaders.reduce(function (acc, header) {
      return header.isDisplayed()
          .then(function (isDisplayed) {
              return acc += !isDisplayed ? 1 : 0;
          })
    }, 0)).toBe(7);
如果项目未显示,我将累加器变量增加
1
,然后返回它并与正确的值进行比较。

reduce()
可以在此处使用,但这是“最常用的量角器方法”:

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