У меня есть модуль, который подключается к API веб-сокета в качестве клиента. Это выглядит следующим образом:
. / Src / utils / connect-realtime-api. js
const WebSocket = require('ws')
const setup = require('./helpers/setup')
connectRealtimeAPI = () => {
const ws = new WebSocket('wss //echo.websocket.org')
ws.onopen = () => {
ws.send(JSON.stringify({ "type": "reg", "channel": "stats1" }))
ws.send(JSON.stringify({ "type": "reg", "channel": "stats2" }))
console.log('[WebSocket] Connection opened.')
}
ws.onerror = (event) => {
console.error('[WebSocket] An error occurred.')
console.error(`Code: ${event.code}`)
console.error(`Reason: ${event.reason}`)
}
ws.onclose = (event) => {
console.error('[Websocket] Connection closed.')
console.error(`Code: ${event.code}`)
console.error(`Reason: ${event.reason}`)
console.log('Retrying connection in 10 seconds...')
setTimeout(() => connectRealtimeAPI(), 10000)
}
setup(ws)
}
module.exports = connectRealtimeAPI
setup
функция принимает ws
в качестве параметра, а затем выполняет некоторые действия на основе полученных сообщений.
. / src / utils / helpers / setup. js
const setup = (ws) => {
ws.onmessage = (event) => {
data = JSON.parse(event.data)
// Perform actions based on order in which messages are received.
}
}
module.exports = setup
Я хочу проверить connect-realtime-api.js
, а также setup.js
, используя Jest.
Для этого мне нужно смоделировать библиотеку ws
с помощью Jest, поместив ws.js
в каталог __mocks__
и найти способ отправки open
, error
, close
а также сообщения через поддельные ws
, чтобы вызвать соответствующие console.logs
и console.errors
и затем проверить их.
Я нашел эту библиотеку, которая может помочь мне достичь этого, но Я не могу понять, как это сделать go. Здесь также есть подсказка реализации, приведенная здесь , но, опять же, я не могу понять, как отправлять события / сообщения после успешной проверки ws
.
Нужна помощь в отношении деталей реализации для испытаний.