首先,向 Protractor 团队和社区致敬,因为他们提出了这样一个库来解决诸如 E2E 测试之类的棘手问题。
我在 ElementFinder 周围有一个包装 JS 类,因为我想添加额外的实用程序方法来进一步检查 ElementFinder。当我返回此类对象的实例时,我将其返回:
function myFunc(){
var myElement = element(by.binding('plan.name'));
var deferred = protractor.promise.defer();
var myWrapper = new myElementWrapper(myElement);
deferred.fulfill(myWrapper);
return deferred.promise;
}
稍后我希望 Jasmine 2.1 中的值使用:
var val=myFunc();
expect(val).not.toBeNull();
根据Protractor 女王@juliemr的官方文档,应该等到承诺解决。它似乎在不停地掠过。查看我的代码生成的 promise 实例,我发现它的类型是:。在量角器代码中,我注意到它正在使用:。我也尝试过包装调用但没有成功,并希望避免使用一系列链接调用,因为它会使测试的可读性降低。expect
goog.scope.promise.Promise
webdriver.promise.isPromise(res)
flow.execute
.then
在继续测试流程之前,这是否会正确地等待解决我上面的承诺?
如果不是,那么创建 Protractor 的风格正确检查的 Promise 对象的正确方法是expect
什么?
我正在使用新的闪亮的 Protractor 2.0 版本运行。