Есть 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, в принципе? Или я что-то не так делаю/понимаю?