Cómo vaciar condicionalmente un $ timeout en la prueba de unidad angular
Tengo un código que es algo como esto:
function doThing() {
if (invalidInput) {
console.error('Invalid input.');
return;
}
$timeout(function() {
MyService.doThing();
}, 1000);
}
Quiero probar esoMyService.doThing
no se llama cuando se pasa una entrada no válida.
Si llamodoThing(invalidInput)
sin hacer$timeout.flush()
, MyService.doThing
no se llamaría, independientemente de si tengo líneas 2-5. Entonces, para probar realmente siMyService.doThing
se llama cuando se pasa una entrada no válida, necesito llamar$timeout.flush
.
El problema es que arroja un error si intento descargar cuando no hay nada que eliminar.Error: No deferred tasks to be flushed
.
¿Cómo puedo manejar este escenario? Me gustaría hacer algo como$timeout.flushIfFlushable()
.