Тестирование сервера socket.io возвращает ложное срабатывание - PullRequest
0 голосов
/ 03 декабря 2018

Я устанавливаю набор тестов, используя jest для приложения node / socket.io.

Когда я проверяю связь сервера -> клиента, все работает как положено.

Когда я проверяю связь клиента -> сервера, мой набор тестов проходит с ложным срабатыванием:

Это тест, который дает ложный положительный результат:

test('should communicate with waiting for socket.io handshakes', (done) => {
        client.emit('example', 'some message');
        setTimeout(() => {
          server.on('example', (message) => {
            expect(message).toBe('some message')
          })
          done();
        }, 50);
      });

Это весь мой набор тестов:

import io from 'socket.io-client';
import * as http from 'http';
import ioBack from 'socket.io';

let client;
let httpServer;
let httpServerAddr;
let server;

/**
 * Setup WS & HTTP servers
 */
beforeAll((done) => {
  httpServer = http.createServer().listen();
  httpServerAddr = httpServer.address();
  server = ioBack(httpServer);
  done();
});


/**
 *  Cleanup WS & HTTP servers
 */
afterAll((done) => {
  server.close();
  httpServer.close();
  done();
});

/**
 * Run before each test
 */
beforeEach((done) => {
  // Setup
  // Do not hardcode server port and address, square brackets are used for IPv6
  client = io.connect(`http://[${httpServerAddr.address}]:${httpServerAddr.port}`, {
    'reconnection delay': 0,
    'reopen delay': 0,
    'force new connection': true,
    transports: ['websocket'],
  });
  client.on('connect', () => {
    done();
  });
});

/**
 * Run after each test
 */
afterEach((done) => {
  // Cleanup
  if (client.connected) {
    client.disconnect();
  }
  done();
});


describe('basic socket.io example', () => {
  test('should communicate', (done) => {
    // once connected, emit Hello World
    server.emit('echo', 'Hello World');
    client.on('echo', (message) => {
      // Check that the message matches
      expect(message).toBe('Hello World');
      done();
    });
    server.on('connection', (mySocket) => {
      expect(mySocket).toBeDefined();
    });
  });
  test('should communicate with waiting for socket.io handshakes', (done) => {
    client.emit('example', 'some message');
    setTimeout(() => {
      server.on('example', (message) => {
        expect(message).toBe('some  incorrect message')
      })
      done();
    }, 50);
  });
});

Я не уверен, почему я получаю ложный положительный результат.

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