Test webSocket

Publicado por Josué Hernández
hace 1 año

Hola. Alguien sabe cómo puedo testear esta función?

 socketConnect(uri) {
    this.wS = new WebSocket(uri);
    this.wS.addEventListener('open', this._openSocket.bind(this));
    this.wS.addEventListener('message', this._messageSocket.bind(this));
    this.wS.addEventListener('close', this._closeSocket.bind(this));
  }
webSocekt unit test
Respuesta de Cristian Olaz
hace 1 año

Buenas tardes Josué,

Para hacer pruebas sobre la función que enviaste podés crear un servidor web socket y usar un framework como por ejemplo Jest.

Te detallo un paso a paso con ejemplos usando NodeJS y Jest para hacer las pruebas sobre una conexión web socket. Podés hacer las modificaciones necesarias para adaptarlo a la función que estás usando.

Por empezar dirígete a la carpeta en la que vas a trabajar y asegurate de instalar los requerimientos:

npm install ws
npm install --save-dev jest

Una vez completada la instalación modificá el archivo package.json para agregar la siguiente definición:

"scripts": {
    "test": "jest"
}

Esto te va a permitir ejecutar el comando "npm test".

Luego hay que crear un archivo llamado test.js en el cuál podés escribir las pruebas usando el siguiente código que te escribo como guía. En este caso se crea un servidor web socket y un cliente que abre la conexión con el servidor. Se espera que el servidor le envíe al cliente el mensaje "Hola mundo":

const { describe, expect, test } = require("@jest/globals")
const WebSocket = require("ws")

// La descripción del conjunto de pruebas
describe("socketConnect", () => {

    let server
    let client

    beforeAll(() => {
        // Se crea un servidor web socket escuchando en el puerto 8080
        server = new WebSocket.Server({ port: 8080 })

        // El servidor le envía un mensaje al cliente cuando se establece la
        // conexión
        server.on("connection", (client) => {
            client.send("Hola mundo")
        })
    })

    afterAll(() => {
        server.close()
    })

    // Descripción de la prueba
    test("Debe establecer una conexión con el servidor y recibir el mensaje 'Hola mundo'", () => {

        // Se abre la conexión con el servidor
        client = new WebSocket("ws://localhost:8080")

        return new Promise((resolve) => {
            client.on("message", (message) => {

                // Se espera que el mensaje recibido sea "Hola mundo"
                // Si no es así la prueba dará error
                expect(message.toString()).toBe("Hola mundo")
                resolve()
            })
        }).then(() => {
            client.close()
        })
    })
})

Espero que te sirva. Un saludo.

Respuesta de Nick
hace 1 año

Buenas tardes Josué,

na conexión WebSocket y define funciones que se ejecutan en respuesta a eventos como la apertura, el cierre y la recepción de mensajes del socket.Tambien puedes hacer unos de MOCHA.

Instalar Mocha: primero, debes instalar Mocha como una dependencia de desarrollo en tu proyecto. Puedes hacer esto utilizando el siguiente comando en la terminal:

npm install --save-dev mocha

Crear un archivo de prueba: a continuación, crea un archivo de prueba llamado test.js en la raíz de tu proyecto. Puedes nombrar el archivo como quieras, pero es una buena práctica seguir una convención de nomenclatura como .test.js o .spec.js.

Escribir una prueba: en el archivo de prueba, escribe una prueba utilizando la sintaxis de Mocha. Por ejemplo, si queremos probar una función sum que suma dos números, podemos escribir una prueba como esta:

const assert = require('assert');
const { sum } = require('./sum');

describe('sum', function() {
  it('debería sumar dos números', function() {
    assert.equal(sum(1, 2), 3);
    assert.equal(sum(10, -5), 5);
    assert.equal(sum(0, 0), 0);
  });
});

En esta prueba, estamos importando la función sum desde otro archivo (sum.js), y luego estamos usando la función assert.equal para verificar que sum devuelve el resultado esperado cuando se le pasan dos números.

Ejecutar la prueba: finalmente, ejecuta la prueba utilizando el comando mocha en la terminal. Asegúrate de estar en la carpeta raíz de tu proyecto para que Mocha pueda encontrar el archivo de prueba. Por ejemplo:

mocha test.js

Mocha ejecutará la prueba y te proporcionará una salida detallada en la terminal. Si la prueba pasa, deberías ver un mensaje como 1 passing (XXms). Si la prueba falla, verás un mensaje de error que te indicará dónde falló la prueba y qué se esperaba.

Espero te ayude. Saludos