Как обработать соединение RabbitMQ на Node.js для использования на Jest? - PullRequest
0 голосов
/ 05 марта 2019

У меня есть фрагмент кода ниже для подключения 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 не завершил свою работу через одну секунду после завершения тестового прогона.

Обычно это означает, что существуют асинхронные операции, которые не были остановлены в вашемтесты.Для устранения этой проблемы попробуйте запустить Jest с --detectOpenHandles.

1 Ответ

0 голосов
/ 06 марта 2019

Я написал код для переподключения RabbitMQ при закрытии соединения.Итак, когда я закрываю соединение на Jest.js , он пытается снова подключить RabbitMQ.

Теперь я подключаю RabbitMQ только on close из-за error.

conn.on("close", (err) => {
    if (err) {
        this.conn = null;
        return this.retryConnection();
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...