stop sincronas programacion nodejs funciones ejemplo asincrona javascript mocking bdd mocha

javascript - sincronas - setinterval nodejs



¿Cómo puedo simular el paso del tiempo en las pruebas de Mocha para que se llamen setTimeout callbacks? (1)

Descubrí que Sinon.JS tiene soporte para manipular el reloj de JavaScript, a través de sinon.useFakeTimers, como se describe en la documentación de Fake Timers . Esto es perfecto ya que uso Sinon con fines de burla, y creo que tiene sentido que Mocha no lo soporte, ya que está más en el dominio de una biblioteca burlona.

Aquí hay un ejemplo que emplea Mocha / Chai / Sinon:

var clock; beforeEach(function () { clock = sinon.useFakeTimers(); }); afterEach(function () { clock.restore(); }); it("should time out after 500 ms", function() { var timedOut = false; setTimeout(function () { timedOut = true; }, 500); timedOut.should.be.false; clock.tick(510); timedOut.should.be.true; });

Necesito probar el código JavaScript que se basa en setTimeout para realizar tareas periódicas. ¿Cómo puedo hacer para que en mis pruebas de Mocha se simule el paso del tiempo, de modo que se llame a las devoluciones de llamadas setTimeout?

Básicamente, estoy pidiendo una funcionalidad similar a Jasmine''s Mock Clock , que te permite adelantar el tiempo de JavaScript mediante una serie de tics.