我的 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 不是一个函数
有没有其他方法可以在我的测试开始执行之前强制调用 onPrepare
中的回调?
最佳答案
onPrepare()
可以 optionally return a promise该 Protractor 将在开始执行测试之前解析:
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.
做一个 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/