强制量角器onPrepare等待异步http请求

时间:2015-12-27 16:49:04

标签: javascript angularjs node.js asynchronous protractor

我的量角器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内的回调吗?

1 个答案:

答案 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;
},