Solución:
Debe inyectar TestScheduler en el método del temporizador dentro de una parte beforeEach:
beforeEach(function() {
this.scheduler = new TestScheduler();
this.scheduler.maxFrames = 5000; // Define the max timespan of the scheduler
const originalTimer = Observable.timer;
spyOn(Observable, 'timer').and.callFake(function(initialDelay, dueTime) {
return originalTimer.call(this, initialDelay, dueTime, this.scheduler);
});
});
Después de eso, tienes el control total del tiempo con scheduleAbsolute
:
this.scheduler.schedule(() => {
// should have been called once
// You can put your test code here
}, 1999, null);
this.scheduler.schedule(() => {
// should have been called twice
// You can put your test code here
}, 2000, null);
this.scheduler.schedule(() => {
// should have been called three times
// You can put your test code here
}, 4000, null);
this.scheduler.flush();
Necesitas scheduler.flush()
para iniciar TestScheduler.
editar: entonces, si solo desea probarlo X veces, use las funciones de programación con la frecuencia (y con los tiempos absolutos correctos en milisegundos) como desee.
edit2: agregué el inicio del programador que faltaba
edit3: lo cambié, así que debería estar trabajando con RxJs5
edit4: Agregar maxFrames
ya que el valor predeterminado es 750ms y evitará probar secuencias de ejecución más prolongada.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)