我的 Protractor 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中调用该回调吗?

最佳答案

onPrepare()可以optionally return a promise在开始执行测试之前 Protractor 将解析的代码:



制作一个 Protractor 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;
},

关于javascript - 强制 Protractor 的onPrepare等待异步http请求,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34482583/

10-11 09:10