在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有时会返回一个承诺,有时会返回一个值?
答案 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,它会等待 它解决并执行基础断言。如果是的话 在其他类型中,它执行断言,就像在任何其他茉莉花中一样 世界。