Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

174
Vistas
Mocha: ¿Cómo afirmarse después de un evento?

Estoy trabajando con Electron y Johnny-Five para procesar algunos datos que leo con mi Arduino Mega 2560 y tengo algunos problemas para probar la conexión de mi Arduino.

Este es el método que quiero probar (ignore la horrible firma):

 export let board: Board | null = null; export function setArduinoBoard(f: (num: number, ...etc: any[]) => void, num: number, ...etc: any[]) { if (board == null) board = new Board({...}); board = board.on("ready", () => f(num, etc)); }

Y esta es mi prueba:

 describe.only("setArduinoBoard()", function() { it("can communicate with the Arduino device", function(done) { const f = (num: number) => console.log(num); const spy = sinon.spy(f); setArduinoBoard(f, 0); assert(spy.called); done(); }); });

Lo que quiero es que la afirmación espere hasta que se haya llamado a la función. Y sé que eventualmente se llama porque la consola genera 0, pero solo después de que falla la afirmación.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El enfoque típico sería mover la devolución de llamada done al controlador de eventos. De esta manera, la prueba esperará hasta que se llame a la devolución de llamada. Si el evento ready no se activa, no se llamará a la devolución de llamada y la prueba expirará con un error después de 2 segundos.

Esto significa que no necesita afirmar explícitamente que se llama al evento f y, de hecho, no necesita espiarlo.

 it("can communicate with the Arduino device", function(done) { const f = (num: number) => { console.log(num); done(); }; setArduinoBoard(f, 0); });

Si necesita afirmar algo después de que se done activado el evento ready , puede agregar una afirmación en el controlador de eventos y usar un bloque catch para capturar excepciones y pasarlas a la devolución de llamada.

 it("can communicate with the Arduino device", function(done) { const f = (num: number) => { try { assert.equal(num, 0); done(); return; } catch (err) { done(err); } }; setArduinoBoard(f, 0); });
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda