【问题标题】:Mocha and socket.io timeoutMocha 和 socket.io 超时
【发布时间】: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)

【问题讨论】:

    标签: socket.io mocha.js


    【解决方案1】:

    好的,知道我做错了什么 我错误地假设函数完成时调用了发出函数的回调,但实际上它是由来自服务器的确认调用的,这在我的代码中没有完成,因此函数没有完成 我已经修改了我的代码,现在一切都按预期工作了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多