当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《强制量角器onPrepare等待异步http请求》经验,为你挑选了1个好方法。

我的量角器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> alecxe..:

onPrepare()可以选择返回量角器在开始执行测试之前解析的承诺:

onPrepare可以选择返回一个promise,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;
},

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有