如何在Protractor中创建和操纵promises?

Kon*_*rus 34 node.js angularjs protractor

我想使用Node Http模块直接调用我的服务器来设置我的Protractor测试.Http是基于回调的,我想将其转化为承诺.

例如,我想让这个函数返回promise:

function callMyApi() {
  var promise = // somehow create promise;

  http.request({path: '/yada/yada', method: 'POST'}, function(resp) {
    promise.complete(resp);
  });

  return promise;
}
Run Code Online (Sandbox Code Playgroud)

因此,问题是:我需要做什么并require()代替"以某种方式创造承诺"才能使其发挥作用?

Jmr*_*Jmr 59

量角器使用WebDriver的承诺,并在"量角器"上全局公开API.所以你应该能做到

var deferred = protractor.promise.defer();
return deferred.promise;
Run Code Online (Sandbox Code Playgroud)

有关完整的WebDriverJS Promise API,请参阅https://code.google.com/p/selenium/source/browse/javascript/webdriver/promise.js上的代码.

  • 谢谢!这有帮助.如何将其添加到https://github.com/angular/protractor/blob/master/docs/api.md的API页面? (4认同)
  • 您可以使用`deferred.fulfill(result)`或`deferred.reject(reason)来解析/拒绝延迟对象. (4认同)