Ошибка: стек асинхронных хуков поврежден в узле js - PullRequest
0 голосов
/ 03 июня 2018

Я пишу тесты для моего приложения Node JS с Мокко

В моем тесте я смоделировал 1 функцию (которая вызывает HTTP-URL) и для некоторых условий я добавилсон 1 секунда.

Я получаю ниже исключения из-за этой функции сна в тесте мокко.В реальном приложении все работает нормально.

Ошибка: стек асинхронных хуков поврежден (фактическое: 18, ожидаемое: 19) 1: v8 :: SnapshotCreator :: закрытие конструктора по умолчанию 2:

узел :: CallbackScope :: ~ CallbackScope 3:

узел :: CallbackScope :: ~ CallbackScope 4: RAND_query_egd_bytes 5:

RAND_query_egd_bytes 6: uv_timer_get_repeat 7: uv_run 8 * * v66: 8

000007FEF8771261 9: 000007FEF87710B6 10:

v8 :: internal :: wasm :: SignatureMap :: Find 11:

v8 :: internal :: Builtins :: CallableFor 12:

v8 :: internal :: Builtins :: CallableFor 13:

v8 :: internal :: Builtins :: CallableFor 14: 000002E6363043C1

Ниже приведен мой код moched function .

somefunction() //In Mock test
{
    let current_time = Math.round((new Date()).getTime() / 1000);
    if (last_execution_time == current_time) {
        admin_delete_user_count++;
        if (admin_delete_user_count >= 3) {
            callback({
                stack: "TooManyRequestsException: Rate exceeded",
                "code": "TooManyRequestsException",
                "statusCode": 400
            }, undefined);
            return;
        }
    } else {
        admin_delete_user_count = 0;
        last_execution_time = Math.round((new Date()).getTime() / 1000);
    }
    callback(undefined, "Test");
}

Ниже приведена актуальная функция в моем приложении js для узла, которая вызывает проблему после отправки исключения из кода выше.

somefunction() // In Real applicatio
{
    if (err) {
        if (err.code == "TooManyRequestsException") {
            logger.log("INFO", "TooManyRequestsException, So wait a while for 1 second and retry");
            index = index - 1;
            sleep(1000); // THIS IS CAUSING THE ISSUE
        }
    } else {
        console.log("deletedUsers:" + JSON.stringify(deletedUsers));
    }
}

Anyпомочь?

1 Ответ

0 голосов
/ 04 июня 2018

Я обнаружил проблему, указанную выше.

По существу, был тайм-аут 250 мс, который вызывал проблему в жизненном цикле асинхронных перехватов.

Я изменился с

timeout.timeout('waitTimer', 250,
   function() {
     expect(res.statusCode).to.equal(200);
     done();
   }
);

timeout.timeout('waitTimer', 1250,
   function() {
     expect(res.statusCode).to.equal(200);
     done();
   }
);

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...