Закрытие брокера Mosca после юнит-тестов выдает ошибку - PullRequest
0 голосов
/ 02 июня 2019

Я использую Mosca с TypeScript на Node.js и написал собственный брокер для удовлетворения своих потребностей.

Когда я тестирую свои методы по отдельности (с использованием библиотеки Jest UT), кажется, что все работает нормально, до конца тестов, где я получаю следующую ошибку:

Error: This ascoltatore is closed
    at TrieAscoltatore.raiseIfClosed [as _raiseIfClosed] ([path]\node_modules\ascoltatori\lib\abstract_ascoltatore.js:72:11)
    at TrieAscoltatore.subscribe ([path]\node_modules\ascoltatori\lib\trie_ascoltatore.js:40:8)
    at Server.<anonymous> ([path]\node_modules\mosca\lib\server.js:267:22)
    at Server.emit (events.js:194:15)
    at [path]\node_modules\mosca\lib\server.js:242:12
    at makeCall ([path]\node_modules\fastseries\series.js:117:7)
    at ResultsHolder.release ([path]\node_modules\fastseries\series.js:96:9)
    at Server.NoResultsHolder.release ([path]\node_modules\fastseries\series.js:72:22)
    at Object.onceWrapper (events.js:277:13)
    at Server.emit (events.js:189:13)
    at emitListeningNT (net.js:1304:10)
    at process._tickCallback (internal/process/next_tick.js:63:19)
[path]\node_modules\ascoltatori\lib\abstract_ascoltatore.js:72
    throw new Error("This ascoltatore is closed");
    ^

Вот как выглядит мой broker.ts:

import { Server, Client, Packet } from 'mosca';

/**
 * Broker
 * @description MQTT Broker
 */
export class Broker {

    /** MQTT server */
    public server: Server;

    constructor(
    ) {
        const settings = {
            port: 1883,
            host: '127.0.0.1'
        };

        this.server = new Server(settings);
    });

    [methods]

}

Вот мой broker.spec.файл тестирования ts:

import { Broker } from './broker';
import { Packet } from 'mosca';

describe("Broker", () => {

    let broker = new Broker;

    const mqtt = require('mqtt');
    const client  = mqtt.connect('mqtt://127.0.0.1');

    afterAll(() => {
        broker.server.close();
    });

    [Some tests]

});

Как видите, я пытаюсь закрыть сервер MQTT, который я создал вначале с new Broker, используя синтаксис afterAll.Однако по какой-то причине я получаю эту ошибку.

Хорошо отметить, что я пытался использовать broker.server.close() в реальном тесте, где я вызывал этот метод всякий раз, когда клиент подключался к моему брокеру, ион работал отлично, сервер закрывался, когда я просил об этом.

Я хотел бы знать, что я делаю здесь неправильно.Ошибка заставляет меня думать, что сервер уже закрыт, но я не понимаю, почему так будет, если я не скажу остановить его.

...