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

How to call (NPM) request multiple times in mocha before hook?

我想在挂钩之前在 mocha 中多次(2 次)调用请求。有没有正确的procedure/way来称呼他们。我目前的用法是这样的,我得到错误 done() 调用太多次。

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
});

您需要等待所有请求,只有在它们全部完成时才调用 done。

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
});

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

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