Я использую mocha для проверки API Node.js, который я пишу. Мне нужно mocha для отправки, например, 100 HTTP-запросов одновременно, а затем 100 обратных вызовов, ожидающих ответных данных. И после того, как все 100 вызовов будут выполнены, мне нужно запустить еще одну серию из 100 HTTP-запросов.Mocha async запрашивает API Node.js
Что я знаю о Mocha: каждый бок о бок Описание вызова функции выполняется синхронно. В одном из описаний я запускаю 100 HTTP-запросов, используя async
(это то, что мне сказали в большинстве ответов 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, а другой для мокко-тестов, отправляющих запросы, и API не получает все вызовы асинхронно. запрос блокирует каждый последующий вызов до тех пор, пока не будет возвращено предыдущее значение. – Jeremy
Если вы хотите одновременные вызовы, я бы рекомендовал их группировать: даже если вы запускаете их вместе, обычно существует максимальное количество вызовов, которые могут быть открыты параллельно. Я считаю, что 100 намного выше этой шапки. – MarcoL
ну, я не могу даже получить 2 одновременных звонка с этим, хотя – Jeremy