Aliansys
@Aliansys

Возможно ли, используя Mocha, тестировать Node.js + Socket.io сервер?

Есть Node.js сервер. Общение между клиентом и сервером происходит с помощью socket.io.
Mocha до этого не использовалась. Нужно написать тесты для "запрос-ответ". То есть, я хочу по определенному запросу проверить определенный ответ.

Единственное, что нашлось в гугле:
liamkaufman.com/blog/2012/01/28/testing-socketio-w...
Но здесь описывается случай, когда сервер и тесты описываются внутри каталога test и запускаются в рамках исполнения Mocha'ей.

У меня же сервер уже есть. Я хочу написать тесты к готовому серверу, чтобы просто упростить добавление нового функционала в будущем автоматическим тестированием всего функционала разом. То есть, у меня на сервере будет каталог test, в котором будут все тесты к этому же серверу.

Исходя из того, что я смог нагуглить, я написал следующий код теста:

var assert = require("assert"),
  should = require('should'),
  io = require('socket.io-client'),
  socketURL = 'http://localhost:3102',
  options ={
  transports: ['websocket'],
  'force new connection': true,
  'reconnection delay' : 0,
  'reopen delay' : 0
  };
describe('Server', function(){
  var socket;
  beforeEach(function(done) {
    // Setup
    console.log('Establishing connection');
    socket = io.connect(socketURL, options);

    socket.on('connect', function() {
      console.log('worked...');
      done();
    });
});
...
  it('should receive messages', function(done){
    socket.on('message', function(data){
      console.log('received');
      done();
    });
...
})


Результат выполнения теста:
Server
Establishing connection
    1) "before each" hook

  0 passing (2s)
  1 failing

  1) Server "before each" hook:
     Error: timeout of 2000ms exceeded
      at null.<anonymous> (\npm\node_modules\mocha\lib\runnable.js:139:19)
      at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)


В логе сервера ничего. Ничто не пыталось к нему подключиться.

Если же самому зайти через веб интерфейс, то сокеты нормально соединяются с сервером. То есть, сам сервер функционирует нормально.

Возможно ли такое тестирование с помощью Mocha, в принципе? Или я что-то не так делаю/понимаю?
  • Вопрос задан
  • 4156 просмотров
Решения вопроса 1
Aliansys
@Aliansys Автор вопроса
Ответ найден. Версии библиотек socket.io и socket.io-client должны быть одинаковыми (ну или в новой версии socket.io-client что-то не так).
Сейчас у меня стоит socket.io v0.9.16 и socket.io-client этой же версии и все отлично работает.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы