我正在使用摩卡來測試我寫的Node.js API。我需要摩卡一次發送100個HTTP請求,然後有100個回調等待響應數據。然後,在所有這些調用完成後,我需要運行另一系列100個HTTP請求。摩卡異步請求到Node.js API
我對摩卡的瞭解:每個並排描述函數調用同步運行。在一個描述中,我使用async
運行100個HTTP請求(這是大多數Stackoverflow響應告訴我要做的事情)。
現在,我只是讓這些HTTP請求異步運行,每個it
應該是異步的,但是等待請求數據
var registeredData = {};
describe("Run first 100 HTTP requests...", function() {
async.map(calls, function (call, callback) {
it('call '+call.num, function(done) {
request({
method: 'POST',
uri: 'http://127.0.0.1:3000/register',
json: {
data: {
name: call.name,
id: call.id
}
},
},
function (err, res) {
expect(res.body).to.exist;
registeredData[call.num] = res.body.info;
done();
});
});
callback();
});
});
describe("Run next 100 HTTP requests...", function() {
async.map(calls, function (call, callback) {
it('call '+call.num, function(done) {
request({
method: 'POST',
uri: 'http://127.0.0.1:3000/getData',
json: {
data: {
dataFor: registeredData[call.num]
}
},
},
function (err, res) {
expect(res.body).to.exist;
done();
});
});
callback();
});
});
基本上當絕對不是這樣的,第一個100點的HTTP請求註冊賬戶,下一個100檢索每個相應的帳戶信息。我不知道什麼時候打電話done()
以及何時致電callback()
(屬於async.map
)。有人知道該怎麼辦?
是啊你是對的,我拿出了async.map。但這些請求是一個接一個地發送的。我有兩個終端,一個用於API,另一個用於發送請求的mocha測試,API不是異步接收所有的調用。請求正在阻止每個後續呼叫,直到返回前一個爲止 – Jeremy
如果您想要併發呼叫,建議將它們分組:即使您將它們全部放在一起,通常也可以並行打開最大數量的呼叫。我相信100是遠高於這個上限。 – MarcoL
好吧,我甚至無法獲得2個併發呼叫,雖然 – Jeremy