Wie testet man die Dauer einer $ timeout-Operation mit Jasmine?

7

Angenommen, ich habe die folgende anonyme Funktionalität in einer Direktive:

%Vor%

Dies funktioniert erfolgreich. Nun, wenn ich einen Test schreiben wollte, mit Jasmin, um sicherzustellen, dass die Klasse nach ~ 2s entfernt wird, wie würde dies geschehen?

Ich sollte hinzufügen, dass ich versucht habe, bisher sowohl jasmine.Clock als auch waitsFor Ansätze zu verwenden, und in beiden Fällen sind die Tests fehlgeschlagen. Bemerkenswerterweise, wenn ich $timeout in setTimeout innerhalb meiner Direktive ändere, sind beide Tests bestanden, also scheint das eckige Verhalten hier zu spielen.

(Beachten Sie, dass die Verwendung von $timeout.flush() hier nicht zufriedenstellend ist, da es nur beweist, dass das Zeitlimit abgelaufen ist, nicht wie lange es gedauert hat).

    
scarlz 22.01.2014, 01:16
quelle

1 Antwort

20

Beginnend in 1.2 $timeout.flush() nimmt einen Verzögerungsparameter, der die Uhr ähnlich wie jasmine.Clock simuliert. s Simulation, aber in einer Weise, die Angular $ Timeout glücklich macht.

Also wird dieser Test bestanden:

%Vor%

Demo-Geige

    
KayakDave 22.01.2014, 04:17
quelle

Tags und Links