gpt4 book ai didi

node.js - 如何使用 mocha 测试 node.js websocket 服务器?

转载 作者:太空宇宙 更新时间:2023-11-04 02:13:50 27 4
gpt4 key购买 nike

我需要测试一个基于websocket的扑克游戏服务器。

因此,如果player1向服务器发送消息,服务器通常应该向其他玩家发送消息。

我编写了一个如下所示的测试 block :

describe('protocol', () => {
before(() => {
player1 = new WebSocket('ws://xxxxxx');
player1 = new WebSocket('ws://xxxxxx');
player2 = new WebSocket('ws://xxxxxx');
player3 = new WebSocket('ws://xxxxxx');
});

it('player1 send message1 player3 should receive' (done) => {

//block1
let message1 = {
id: 'message1',
data: 'message1'
};

player1.send(JSON.stringify(message1));
player3.once('message', (message) => {

//block2
expect(message).equal(JSON.stringify(message1)),
done();
});
});

it('player2 send message2 player3 should also receive' (done) => {

//block3
let message2 = {
id: 'message2',
data: 'message2'
};

player2.send(JSON.stringify(message1));
player3.once('message', (message) => {

//block4
expect(message).equal(JSON.stringify(message2)),
done();
});
});
}

我想要的执行顺序是: block 1 -> block 2 -> block 3 -> block 4

但实际上:blocks1 -> block3 -> block2 -> block4

因此block4messagemessage1而不是message2

如何解决这个问题?

最佳答案

简单的答案就是将所有 playerX.send(messageX); 移到 playerX.once() 之后,就是这样。

请记住,这些调用是异步的,因此顺序并不重要,但您需要在触发某些内容之前做好接收准备。

describe('protocol', () => {
before(() => {
player1 = new WebSocket('ws://xxxxxx');
player1 = new WebSocket('ws://xxxxxx');
player2 = new WebSocket('ws://xxxxxx');
player3 = new WebSocket('ws://xxxxxx');
});

it('player1 send message1 player3 should receive', (done) => {

//block1
let message1 = {
id: 'message1',
data: 'message1'
};

player3.once('message', (message) => {

//block2
expect(message).equal(JSON.stringify(message1));
done();
});
player1.send(JSON.stringify(message1));
});

it('player2 send message2 player3 should also receive', (done) => {

//block3
let message2 = {
id: 'message2',
data: 'message2'
};

player3.once('message', (message) => {

//block4
expect(message).equal(JSON.stringify(message2));
done();
});
});
player2.send(JSON.stringify(message1));
}

关于node.js - 如何使用 mocha 测试 node.js websocket 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36707566/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com