量角器控制流程和非异步测试

时间:2016-05-05 21:45:17

标签: javascript angularjs protractor

我对角度和量角器非常陌生,但我必须为一个非常复杂的应用程序编写e2e测试,并且我很难掌握承诺和控制流程。

我已经阅读了文档,看起来很简单,对于简单的测试来说就是这样。然而,我需要的一些步骤需要在页面对象文件中进行大量工作,执行几个同步函数以获得我需要的结果,这引起了巨大的麻烦。即使使用

var deferred = protractor.promise.defer()
deferred.fulfill()
return deferred.promise

在测试中,然后将它们与他们联系起来,他们以奇怪的顺序运行。我试过操纵控制流程并且我仍然得到了奇怪的结果,但是如果我在规范中有逻辑步骤并且在最后有一个断言,并且逻辑步骤做了一个非常简单的事情,即

describe('angularjs homepage', function() {
  it('should greet the named user', function() {
    var angularHomepage = new AngularHomepage();
    angularHomepage.get();

    angularHomepage.setName('Julie');

    expect(angularHomepage.getGreeting()).toEqual('Hello Julie!');
  });
});

它工作正常,所以我的问题是,控制流程是否仅适用于spec文件?我是否必须在那里进行所有链接而不是页面对象?或者有一个很好的方法来运行一个函数,它调用页面对象中的其他几个函数,返回一个值,并确保从一个函数的返回传递到后续函数?例如

this.someFunction = function(var) {
  var deferred = protractor.promise.defer();

  self.function1(var).then(function(var2) {
    self.function2(var2).then(function(var3) {
      deferred.fulfill(var3)
    });
  });
  return deferred.promise;
};

在页面对象和规范

中的类似内容
describe('some test', function() {
      it('should do something', function() {            
        expect(pageObject.someFunction()).toEqual('A value.');
      });
});

如果这有任何意义吗?

感谢。

0 个答案:

没有答案