强制量角器的 onPrepare 等待异步 http 请求
Posted
技术标签:
【中文标题】强制量角器的 onPrepare 等待异步 http 请求【英文标题】:Force protractor's onPrepare to wait for async http request 【发布时间】:2016-04-01 15:46:21 【问题描述】:我的量角器 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
中的回调?
【问题讨论】:
【参考方案1】:onPrepare()
可以 optionally return a promise 量角器在开始执行测试之前解决:
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;
,
【讨论】:
以上是关于强制量角器的 onPrepare 等待异步 http 请求的主要内容,如果未能解决你的问题,请参考以下文章