Как проверить сервер socket.io при запуске клиента - PullRequest
0 голосов
/ 08 декабря 2018

Я хочу, чтобы клиент испускал сигнал и проверял поведение моего сервера socket.io при получении этого сигнала.Я посмотрел на этот вопрос и эти посты в блоге:

шут мокко, чай

но они, кажется,направленный на тестирование клиента, а не сервера.

Вот пример чего-то, что я пытаюсь реализовать:

  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 указаны ниже:

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();
});

1 Ответ

0 голосов
/ 08 декабря 2018

Я использую мокко для тестирования.Но я не уверен, что ты делаешь.В вашем внутреннем сокет-сервере нет прослушивателя, который вы определили.

Вот небольшой пример теста.Может быть, это поможет?!

Контрольный пример

var sockethost = websocketUrl;
socketclient = io.connect(sockethost);
socketclient.on('customerId', function(data) {
   var data = {
     customerId: 10,
   }
   socketclient.emit('customerId', data);
});

Сервер:

var io = require('socket.io')(http);
io.sockets.on('connection', function (socket) {

  socket.emit('customerId', null);

});

Так что это очень простой тест.Внутренний сервер отправляет подключенному клиенту 'customerId', у клиента есть прослушиватель customerId и отправляет обратно свой customerId.Вы также можете сделать наоборот: у вас есть слушатель на сервере и emit на клиенте.Но я не совсем уверен, что вы пытаетесь сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...