Я пытаюсь написать несколько тестов с использованием 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)
Понятия не имею, что я делаю не так. Как я могу исправить, чтобы тест-кейс работал правильно?