Тест вебсеток с Jest - PullRequest
       20

Тест вебсеток с Jest

0 голосов
/ 03 мая 2019

Я создал приложение в node.js, которое дает мне интерфейс websocket, используя пакет 'ws' из npm на сервере. Теперь я хочу проверить этот интерфейс с шуткой. Тест проходит успешно, но Jest не завершился и выдает ошибку «Jest не завершил свою работу через одну секунду после завершения теста». и застревает.

Я прочитал документацию и обнаружил, что мне нужно использовать параметр «done» в тесте и вызывать его, когда тест закончен.

Сервер будет запущен в функции beforeAll и остановлен в функции afterAll, заданной jest.

describe('app', () => {
    it('connect websockets response', (done) => {
        expect.assertions(1);

        new WebSocket(`ws://localhost:${port}`)
            .on('message', (msg) => {
                expect(JSON.parse(msg).id).toEqual(0);
                done();
            })
    });
});

Я ожидаю, что шутка прекратится успешно после завершения теста.

1 Ответ

2 голосов
/ 03 мая 2019

Потратив часы на поиск, я обнаружил, что в самом тесте я должен закрыть соединение Websocket и дождаться события закрытия.

describe('app', () => {
    it('connect websockets response', (done) => {
        expect.assertions(1);

        const ws = new WebSocket(`ws://localhost:${port}`)
            .on('message', (msg) => {
                expect(JSON.parse(msg).id).toEqual(0);
                ws.close();
            })
            .on('close', () => done());
    });
});
...