强制量angular器onPrepare等待asynchronoushttp请求
我的量angular器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
有没有其他的方法,我可以强制在我的testing开始执行之前调用onPrepare
的callback?
onPrepare()
可以有select地返回量angular器在开始执行testing之前解决的一个承诺 :
onPrepare
可以select返回一个承诺,在继续执行之前,量angular器将等待。 如果准备涉及任何asynchronous调用(例如,与浏览器交互),则可以使用这种方法。 否则量angular器不能保证执行顺序,并可能在准备完成之前开始testing。
做一个量angular器的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; },