【发布时间】:2016-04-19 02:41:22
【问题描述】:
我需要测试一个基于 websocket 的扑克游戏服务器。
所以,如果player1向服务器发送消息,服务器通常应该向其他玩家发送消息。
我写了一个如下的测试块:
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();
});
});
}
我想要的执行顺序是:
block1 -> block2 -> block3 -> block4
但真的:blocks1 -> block3 -> block2 -> block4
所以block4 的message 是message1 而不是message2
我该如何解决这个问题?
【问题讨论】:
-
对不起!!!!该代码块的执行顺序为
block1->block2->block3->block4
标签: node.js unit-testing websocket socket.io mocha.js