ULL-ESIT-INF-DSI-2122 / ull-esit-inf-dsi-21-22-prct09-filesystem-notes-app-alu0101323282

ull-esit-inf-dsi-21-22-prct09-filesystem-notes-app-alu0101323282 created by GitHub Classroom
0 stars 0 forks source link

Test de comandos yargs #1

Open alu0101323282 opened 2 years ago

alu0101323282 commented 2 years ago

Buenas tardes, estoy teniendo problemas para hacer las pruebas de los comandos yargs, no se cómo hacerlas. ¿Sabe de algún tutorial o documentación que explique cómo hacerlo? Gracias de antemano. Un saludo. @esegredo

esegredo commented 2 years ago

Hola Marc,

El código de Yargs se supone que ya está probado, dado que es un paquete publicado en npm. Lo que debes probar son los manejadores que utilizas con yargs para ejecutar las acciones asociadas a cada comando y conjunto de opciones.

Espero haberme explicado.

Saludos.

alu0101323282 commented 2 years ago

Si, me refería a eso, que no se como probar los manejadores, he intentado crear procesos para ejecutar los comandos con spawn pero al ser asíncronos las pruebas no siempre se ejecutan en el orden previsto. @esegredo

esegredo commented 2 years ago

Hola, buenas tardes.

Podrías hacer algo como lo siguiente:

  1. La clase a probar debe heredar de EventEmitter.
  2. El código fuente del manejador que deseas probar debe emitir un evento propio con alguna información adicional (un mensaje informativo, por ejemplo. Dado que tu clase hereda de EventEmitter, podrías hacer cosas como `this.emit('myOwnEvent', 'This is a test').
  3. Una prueba debe ser capaz de emitir el evento necesario que dispare el manejador que quieres probar.
  4. La prueba se basa en escribir un manejador para el evento propio que has emitido ('myOwnEvent' en nuestro ejemplo) y en dicho manejador debes escribir un expect de que el mensaje emitido junto con el evento coincide con el esperado ('This is a test').

Ya me dices si consigues hacerlo así o con alguna variante que se te ocurra. Al final es, más o menos, hacer lo que se hace en el ejemplo final de la sección de los Sockets de los apuntes de la asignatura.

Saludos.