强制量角器onPrepare等待异步http请求 [英] Force protractor's onPrepare to wait for async http request

查看:200
本文介绍了强制量角器onPrepare等待异步http请求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的量角器conf.js, onPrepare 函数需要发出类似的http请求,

My protractor conf.js,onPrepare function needs to make a http request that looks like,

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()
         }
      })

它抛出错误,完成不是函数

还有其他办法,我可以强迫在我的测试开始执行之前要调用 onPrepare 内的回调?

Is there any other way, that i can force the callback inside onPrepare to be invoked before my tests start execution?

推荐答案

onPrepare()可以可选地返回量角器w的承诺在开始执行测试之前应该解决:

onPrepare() can optionally return a promise that protractor would resolve before starting to execute the tests:


onPrepare 可以选择返回一个承诺,在继续执行之前,量角器将等待
。如果准备
涉及任何异步调用,例如,可以使用此方法。与浏览器交互。
否则量角器不能保证执行的顺序,并且可能在准备结束前开始
测试。

onPrepare can optionally return a promise, which Protractor will wait for before continuing execution. This can be used if the preparation involves any asynchronous calls, e.g. interacting with the browser. Otherwise Protractor cannot guarantee order of execution and may start the tests before preparation finishes.

制作量角器承诺并从返回它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;
},

这篇关于强制量角器onPrepare等待异步http请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆