如何在挂钩之前在mocha中多次调用(NPM)请求?

时间:2015-11-10 14:15:37

标签: javascript npm mocha npm-request

我想在挂钩之前在mocha中多次调用请求(2次)。是否有正确的程序/方式来调用它们。我目前的用法是这样的,我得错误完成()被调用了太多次。

describe('...', function(){
  before(function(done){
    request({
       ...
    }, function(err,res,body){
       ...
       done(); //also tried by removing it.
    });

    //request 2
    request({
       ...
    }, function(err,res,body){
       ...
       done();
    });
  });
  //it block follows
});

1 个答案:

答案 0 :(得分:1)

您需要等待所有请求,并且只有在完成后才调用。

var requestAComplete = false, requestBComplete = false;

function checkDone() {
    if (requestAComplete && requestBComplete) {
        done();
    }
}

describe('...', function(){
  before(function(done){
    request({ ... }, function(err,res,body){
       ...
       requestAComplete = true;
       checkDone();
    });

    //request 2
    request({ ... }, function(err,res,body){
       requestBComplete = true;
       checkDone();
    });
  });
  //it block follows
});

当然,如果您需要更多它们,您应该使用数组或字典来跟踪状态,并检查循环。 (或者可能从集合中删除)。

或者,作为更好但更高级的解决方案,将两个请求都包装到promises数组中,转换为all数组的承诺,并在结算时调用done