如何处理 Node 上的 RabbitMQ 连接.js在 Jest 上使用?



我有一个以下代码片段来连接 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解决此问题。

我写了一个代码,在连接关闭时重新连接RabbitMQ。因此,当我关闭Jest上的连接时.js它会尝试再次重新连接 RabbitMQ。

现在,由于error,我仅在on close重新连接RabbitMQ。

conn.on("close", (err) => {
if (err) {
this.conn = null;
return this.retryConnection();
}
});

最新更新