我有一个下面的代码片段可以连接RabbitMQ,它可以正常工作,但在测试用例中,出现了异步操作错误。我尝试使用this.start();
和this.start().then
var amqplib = require('amqplib');
const { amqp: { uri: amqpURI } } = require('../config');
class Broker {
constructor(url) {
this.queue = 'user';
this.url = url;
//this.start(); Old
this.start().then(function (conn) {
console.log(conn);
});
}
start() {
return amqplib.connect(this.url).then((conn) => {
conn.on("close", () => {
this.conn = null;
return this.retryConnection();
});
return conn;
}).catch((error) => {
});
}
.....
}
注意:当我评论this.start();
时,错误消失了
错误:
测试运行一秒钟后,Jest没有退出。
这通常意味着有些异步操作不是 在测试中停止了。考虑使用
--detectOpenHandles
来解决此问题。
答案 0 :(得分:0)
我编写了代码,以在连接关闭时重新连接 RabbitMQ 。因此,当我关闭 Jest.js 上的连接时,它试图再次重新连接RabbitMQ。
现在,由于on close
,我仅重新连接RabbitMQ error
。
conn.on("close", (err) => {
if (err) {
this.conn = null;
return this.retryConnection();
}
});