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

时间:2019-03-05 07:33:39

标签: javascript node.js rabbitmq jestjs

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

1 个答案:

答案 0 :(得分:0)

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

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

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