我的量角器conf.js, java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:300)
FATAL EXCEPTION: AbstractCallbackSender
Process: jp.co.translimit.braindots, PID: 7444
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:300)
FATAL EXCEPTION: AsyncTask #5
Process: jp.co.translimit.braindots, PID: 8498
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:300)
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:300)
函数需要发出一个类似的http请求,
onPrepare
它会引发错误,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
内的回调吗?
答案 0 :(得分:9)
onPrepare()
可以optionally return a promise量角器解决:
onPrepare
可以选择返回一个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;
},