Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

167
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!