为什么量角器有时会返回一个承诺,有时会返回一个值?

时间:2015-06-16 13:01:25

标签: javascript angularjs protractor

official documentation中,您可以找到以下代码:

var history = element.all(by.repeater('result in memory'));
expect(history.count()).toEqual(2);

但您也可以找到examples using promises

element.all(by.repeater('app in userApps')).count().then(function(count) {
    console.log(count);
});

那么为什么Protractor有时会返回一个承诺,有时会返回一个值?

3 个答案:

答案 0 :(得分:3)

history.count()确实会返回一个承诺,但是Protractor会调整Jasmine expect来理解承诺。

https://github.com/angular/protractor/blob/master/docs/control-flow.md

答案 1 :(得分:3)

它始终返回一个承诺,只是expect被修补以通过将它们添加到control-flow来处理它们,以便它们以正确的顺序执行和解决。

答案 2 :(得分:2)

  量角器的人们“修补”了茉莉花,以便承诺。那是,   expect语句执行duck-typing - 如果是promise,它会等待   它解决并执行基础断言。如果是的话   在其他类型中,它执行断言,就像在任何其他茉莉花中一样   世界。

source