首页 > 解决方案 > Socket.on 没有在 mocha 中被调用

问题描述

我尝试使用 mocha 测试 socket.io,但是在进行套接字调用时出现问题。我认为套接字未连接,因为未触发控制台日志,但显示了套接字调用之外的 console.log。或者我如何使用 done() 方法是错误的?

const { assert } = require('chai');
const ioServer = require('socket.io');
const ioClient = require('socket.io-client');
const http = require('http');

const socketUrl = 'http://localhost:5000';
const options = {
  transports: ['websocket'],
  'force new connection': true,
};

let server;
let client;
let httpServer;

describe('Socket', () => {
  beforeEach(done => {
    httpServer = http.createServer().listen();
    server = ioServer(httpServer);
    client = ioClient.connect(socketUrl, options);
    server.on('connection', socket => {
      console.log('connected server');
      socket.emit('echo', 'Hello World');
    });
    client.on('echo', message => {
      console.log('connected client');
      console.log(message);
    });
    console.log('test');
    done();
  });

  afterEach(done => {
    server.close();
    client.close();
    done();
  });

  it('It should connect socket', done => {
    client.on('echo', message => {
      assert.equal(message, 'Hello World');
    });
    done();
  });
});

这是运行 mocha 时的屏幕截图 cli 终端。 摩卡

标签: javascriptnode.jssocketsmocha.js

解决方案


推荐阅读