Angular 使用量角器在角度2中进行端到端测试

Angular 使用量角器在角度2中进行端到端测试,angular,protractor,e2e-testing,Angular,Protractor,E2e Testing,我正在进行角2 e2e测试。我需要有条件地添加it块。必须检查一个计数值,如果其值大于0,则应运行一个测试,否则应运行另一个测试。代码如下: describe('Check insiders:', function () { beforeEach(function (done) { element(by.css('span.insider-count')).getText().then(function(total){ count = total; conso

我正在进行角2 e2e测试。我需要有条件地添加
it
块。必须检查一个计数值,如果其值大于0,则应运行一个测试,否则应运行另一个测试。代码如下:

describe('Check insiders:', function () {
  beforeEach(function (done) {
    element(by.css('span.insider-count')).getText().then(function(total){
      count = total;
      console.log(count);
      //browser.pause();
      done();
    });
  });
  if (count > 0) {
    it('insiders found', () => {
      expect(count).toBeGreaterThan(0);
    });
  } else {
    it('No insiders found', () => {
      // do nothing
      //expect(count).toBe(0);
    });
  }
});

即使count变量的值大于零,它也始终运行else部分。任何帮助都将不胜感激。

这是因为
it
descripe
和所有
jasmine
描述符在您开始测试时都会被处理,这意味着您的状况将在测试获取值之前被测试,这就是为什么它总是被处理为相同的值,因此得到相同的结果

可以通过将条件移动到公共
it
块中来避免:

    it('insiders test', () => {
      if(count > 0){
          expect(count).toBeGreaterThan(0);
      } else {
          expect(true).toBe(true);
      }
    });

也就是说,我不理解你的逻辑,因为你基本上是在做“如果计数大于0,请断言它大于0,否则不要”,这是一个不会失败的测试。

问题:css的“span.insider计数”会一直存在吗?如果它不存在,您可能希望在then函数之后添加一个catch。在何处/如何定义计数?