强制量角器onPrepare等待异步http请求 [英] Force protractor's onPrepare to wait for async http request
问题描述
我的量角器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屋!