首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在客户端发出消息时测试socket.io服务器

如何在客户端发出消息时测试socket.io服务器
EN

Stack Overflow用户
提问于 2018-12-08 13:08:37
回答 1查看 2.3K关注 0票数 2

我希望客户端发出一个信号,并在接收到该信号时测试我的socket.io服务器的行为。我已经看过this question和这些博客文章了:

jest mocha, chai

但它们似乎针对的是客户端,而不是服务器。

下面是我正在尝试实现的一个示例:

代码语言:javascript
复制
  test('should communicate with waiting for socket.io handshakes', (done) => {

    socket_client.emit('example', 'some messages');

    setTimeout(() => {

      socket_server.on('example', message => {
        expect(message).toBe('INCORRECT MESSAGE');
      });
      done();
    }, 50);

当我运行我的测试套件时,这应该失败,但没有。

有没有人有简单的例子来测试这种行为?

目前我使用的是jest,但是任何框架都可以。

我的socket.io服务器测试的设置和拆分如下:

代码语言:javascript
复制
import * as http from 'http';
import ioBack from 'socket.io';

let socket_client;
let httpServer;
let httpServerAddr;
let socket_server;

beforeAll((done) => {
  httpServer = http.createServer().listen();
  httpServerAddr = httpServer.address();
  socket_server = ioBack(httpServer);
  done();
});

afterAll((done) => {
  socket_server.close();
  httpServer.close();
  done();
});
EN

回答 1

Stack Overflow用户

发布于 2018-12-08 19:32:27

我正在使用mocha进行测试。但我不确定你在做什么。在您的后端套接字服务器中,没有您定义的侦听器。

下面是一个测试的小示例。也许这会有帮助?!

测试用例

代码语言:javascript
复制
var sockethost = websocketUrl;
socketclient = io.connect(sockethost);
socketclient.on('customerId', function(data) {
   var data = {
     customerId: 10,
   }
   socketclient.emit('customerId', data);
});

服务器:

代码语言:javascript
复制
var io = require('socket.io')(http);
io.sockets.on('connection', function (socket) {

  socket.emit('customerId', null);

});

这是一个非常简单的测试。后端服务器发出连接的客户端' customerId‘,客户端有一个用于customerId的侦听器,并发回它的customerId。您也可以反过来做,即在服务器中有一个侦听器,在客户端中有一个emit。但我不能完全确定你想要做什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53679715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档