angular - Cum să testezi unitar un IntervalObservable
În aplicația mea Angular, folosesc un IntervalObservable pentru a efectua periodic anumite acțiuni (în cazul meu, la fiecare 5 minute):
IntervalObservable.create(300000) // 5 minutes
.subscribe(() => {
this.someMethodReturningObs().subscribe((data) => {
this.myData = data;
});
});
cum pot să îl testez unit?
Răspuns #1
Actualizare:
Pentru a verifica this.myData la fiecare 5 minute.
it("should test data for 5min interval", fakeAsync(() => {
tick(300000);
expect(myData).toBe(testValue);
}))
Vechea răspuns
Jasmine.clock poate fi folosit pentru scopurile tale. Verifică exemplul de mai jos din documentație
beforeEach(function() {
timerCallback = jasmine.createSpy("timerCallback");
jasmine.clock().install();
});
Asigură-te că dezinstalezi ceasul după ce ai terminat pentru a restaura funcțiile originale ale temporizatorului.
afterEach(function() {
jasmine.clock().uninstall();
});
Apelurile către orice callback înregistrat sunt declanșate atunci când ceasul este avansat prin funcția jasmine.clock().tick, care ia un număr de milisecunde.
it("causes a timeout to be called synchronously", function() {
setTimeout(function() {
timerCallback();
}, 100);
expect(timerCallback).not.toHaveBeenCalled();
jasmine.clock().tick(300000);
expect(timerCallback).toHaveBeenCalled();
});
