【发布时间】:2020-08-22 02:28:24
【问题描述】:
我刚刚开始尝试将 Mocha 与 socket.io 一起使用
我有一个同样最小的服务器的最小测试
当我从测试客户端调用 emit() 时,测试超时(即使我在回调中放入了 'done()')
看起来回调没有被调用,即使服务器正在接收消息 - 我在发射函数的回调中没有看到来自“控制台日志”的任何内容,所以我假设该函数是'由于某种原因没有完成
我浏览了各种示例,但看不到我遗漏了什么(或做错了什么)
任何帮助表示赞赏
这是测试代码
const websocket_Server = require('./wsserver');
const http = require('http');
const io = require('socket.io-client');
describe('Websocket server tests', function(){
let http_Server = undefined;
let websocket_Client = undefined;
before(function(done) {
http_Server = http.createServer(() => console.log(" -/- "));
http_Server.listen(7575, () => { console.log("Test: server listening on 7575"); });
websocket_Server(http_Server);
websocket_Client = io.connect('http://localhost:7575/', {
'reconnection delay' : 0
, 'reopen delay' : 0
, 'force new connection' : true
});
websocket_Client.on('connect', function() {
console.log('Client: connected...');
done();
});
websocket_Client.on('disconnect', function() {
console.log('Client: disconnected...');
});
});
it('Test', function(done) {
console.log("Client: Test");
websocket_Client.emit('MSG', '', () =>{ console.log("Client: emit MSG"); done(); });
console.log("Client: Test finish");
});
})
这是服务器代码
const socketIO = require('socket.io');
function socketServer(serverToBind) {
const io = socketIO(serverToBind);
io.on('connection', function(socket){
console.log('WS_Server: Client Connected')
socket.on('MSG', (msg) =>{
console.log('WS_Server: MSG received');
// pass data onto other processes........
});
});
}
module.exports = socketServer;
这是输出
Websocket server tests
Test: server listening on 7575
WS_Server: Client Connected
Client: connected...
Client: Test
Client: Test finish
WS_Server: MSG received
1) Test
0 passing (2s)
1 failing
1) Websocket server tests
Test:
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if
returning a Promise, ensure it resolves. (C:\SVN-Development\WebSockets\minimal socket
test\wsserver.spec.js)
at listOnTimeout (internal/timers.js:549:17)
at processTimers (internal/timers.js:492:7)
【问题讨论】: