【问题标题】:Force protractor's onPrepare to wait for async http request强制量角器的 onPrepare 等待异步 http 请求
【发布时间】:2016-04-01 15:46:21
【问题描述】:

我的量角器 conf.js,onPrepare 函数需要发出一个看起来像这样的 http 请求,

onPrepare: function(done) {
    request.get('http://pepper/sysid')
      .end(function(err, resp){
        if(err || !resp.ok){
          log("there is an error " + err.message)
          done()
        }else{
          global.sysid = resp.sysid
          done()
         }
      })

它会抛出错误,done is not a function

有没有其他方法可以在我的测试开始执行之前强制调用onPrepare 中的回调?

【问题讨论】:

    标签: javascript angularjs node.js asynchronous protractor


    【解决方案1】:

    onPrepare() 可以 optionally return a promise 量角器在开始执行测试之前解决:

    onPrepare 可以选择返回一个承诺,量角器将等待 在继续执行之前。这可以使用,如果准备 涉及任何异步调用,例如与浏览器交互。 否则量角器不能保证执行顺序,可能会启动 准备完成前的测试。

    制作一个量角器promise并从onPrepare()返回:

    onPrepare: function() {
        var defer = protractor.promise.defer();
    
        request.get('http://pepper/sysid').end(function(err, resp) {
            if (err || !resp.ok) {
                log("there is an error " + err.message);
                defer.reject(resp);
            } else {
                global.sysid = resp.sysid;
                defer.fulfill(resp);
            }
        });
    
        return defer.promise;
    },
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-08
      • 1970-01-01
      • 1970-01-01
      • 2017-08-27
      • 1970-01-01
      相关资源
      最近更新 更多