如何在挂钩之前在摩卡中多次调用(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
。
我想在挂钩之前在 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
。