我对角度和量角器非常陌生,但我必须为一个非常复杂的应用程序编写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.');
});
});
如果这有任何意义吗?
感谢。