我在node.js中创建了一个应用程序,它使用服务器上npm的'ws'包为我提供了websocket界面。现在我想开玩笑地测试此接口。测试运行成功,但是玩笑没有退出,并给我一个错误“测试运行完成后一秒钟没有玩笑”。和卡住。
我阅读了文档,发现我必须在测试中使用'done'参数,并在测试完成后调用它。
服务器将在jest给定的beforeAll函数中启动,并在afterAll函数中停止。
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();
})
});
});
我希望测试结束后玩笑会成功。
答案 0 :(得分:1)
花了数小时进行搜索之后,我发现必须关闭测试本身中的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());
});
});