javascript - 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 终端。 摩卡
解决方案
推荐阅读
- javascript - 单击后退按钮时如何保留以前的 HTML
- ionic4 - 向用户发送电子邮件
- python-3.x - Subprocess.call fails to run but if output is pasted to cmd it runs
- c++ - 将 Char 数组转换为 uint8_t 向量
- dart - How to round a number in dart?
- azure - Do leaf/downstream devices connect directly to iot-hub even when edge is used as gateway?
- azure-devops - 如何使用 Azure DevOps Rest API 获取工作项的附件详细信息
- node.js - how to run the dialogflow node js?
- database - 如何在neo4j中映射两列相同的值
- sql - Compare two tables with the same columns and report the difference keeping one column as the reference column