[英]Force protractor's onPrepare to wait for async http request
My protractor conf.js, onPrepare
function needs to make a http request that looks like, 我的量角器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()
}
})
It throws error as, done is not a function
它抛出错误, done is not a function
Is there any other way, that i can force the callback inside onPrepare
to be invoked before my tests start execution? 还有其他方法,我可以在我的测试开始执行之前强制调用onPrepare
的回调吗?
onPrepare()
can optionally return a promise that protractor would resolve before starting to execute the tests: onPrepare()
可以选择返回量角器在开始执行测试之前解析的promise :
onPrepare
can optionally return a promise, which Protractor will wait for before continuing execution.onPrepare
可以选择返回一个promise,Protractor会在继续执行之前等待。 This can be used if the preparation involves any asynchronous calls, eg interacting with the browser. 如果准备涉及任何异步调用,例如与浏览器交互,则可以使用此方法。 Otherwise Protractor cannot guarantee order of execution and may start the tests before preparation finishes. 否则,量角器无法保证执行顺序,可能会在准备完成之前开始测试。
Make a protractor promise
and return it from 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;
},
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.