Событие подключения клиента Socket.io (с защищенным подключением) не запускается в среде Node - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь написать несколько тестов с использованием Mocha, чтобы протестировать некоторые функции для моего приложения, написанного с использованием Node.js и Socket.io. Те, что ниже моего серверного кода с тестовыми примерами, работают правильно при подключении из среды браузера (да, конечно, сервер socket.io прослушивался на https://localhost:8089/)

Сервер Socket.io

const dev = true
function createDev() {
    console.log('SERVER will be initialized on development mode')
    const key = fs.readFileSync('/Users/myowngrave/server.key'),
      cert = fs.readFileSync('/Users/myowngrave/server.crt'),
      credentials = { key, cert }
    return https.createServer(credentials, app)
  }

  function createProd() {
    return http.createServer(app)
  }

  const server = dev ? createDev() : createProd(),
    io = socketIO(server)
console.log('ready now')
server.listen(8089)
server.emit('vthAppReady')
module.exports = server

Юнит тест

import io from 'socket.io-client'

describe('Upload image using socket.io', function() {
  let img,
    socket,
    ioOptions = {
      forceNew: true,
      key: fs.readFileSync('server.key'),
      ca: fs.readFileSync('server.crt')
    }
  before(function(done) {
    this.timeout(10000)
    server.on('vthAppReady', function() {
      console.log('Oh la la LOL')
      socket = io('https://localhost:8089/', ioOptions)
      socket.on('error', err => done(err))
      socket.on('connect', done)
    })
  })
  after(function(done) {
    if (socket.connected) socket.disconnect()
    // just terminate https server
    server.emit('vthAppClose', done)
  })
})

Я уверен, что серверный код работал должным образом, поскольку «готов сейчас» и «о ла ля LOL» появляется при запуске тестовых случаев. Но ни одно из событий "connect" из кода теста не сработало, это не удача. Время ожидания «до всех» истекло.

Error: Timeout of 10000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (/Users/myowngrave/WebstormProjects/vaithuhay-app/test/upload.socket.spec.js)

Понятия не имею, что я делаю не так. Как я могу исправить, чтобы тест-кейс работал правильно?

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