Node.js 错误:节点js中的异步钩子堆栈已损坏
我正在为我的Node JS应用程序编写测试 在我的测试中,我模拟了1个函数(调用HTTP Url),在某些情况下,我添加了1秒的睡眠 由于摩卡测试中的睡眠功能,我得到以下异常。在实际应用中,它运行良好 错误:异步挂钩堆栈已损坏(实际值:18,预期值: 19) 1:v8::SnapshotCreator::默认构造函数闭包2: 节点::CallbackScope::~CallbackScope 3: node::CallbackScope::~CallbackScope 4:RAND\u query\u egd\u字节5: 随机查询egd字节6:uv定时器获取重复7:uv运行8: 000007FEF8771261 9:000007FEF87710B6 10: v8::internal::wasm::SignatureMap::Find 11: v8::internal::Builtins::CallableFor 12: v8::internal::Builtins::CallableFor 13: v8::内部::内置::CallableFor 14:00000 2E6363043C1 下面是我的moched函数的代码Node.js 错误:节点js中的异步钩子堆栈已损坏,node.js,unit-testing,mocha.js,Node.js,Unit Testing,Mocha.js,我正在为我的Node JS应用程序编写测试 在我的测试中,我模拟了1个函数(调用HTTP Url),在某些情况下,我添加了1秒的睡眠 由于摩卡测试中的睡眠功能,我得到以下异常。在实际应用中,它运行良好 错误:异步挂钩堆栈已损坏(实际值:18,预期值: 19) 1:v8::SnapshotCreator::默认构造函数闭包2: 节点::CallbackScope::~CallbackScope 3: node::CallbackScope::~CallbackScope 4:RAND\u quer
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");
}
下面是我的node 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));
}
}
有什么帮助吗?我发现了上面列出的问题 基本上有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();
}
);