Angular тестирование с интервалом () - PullRequest
0 голосов
/ 17 июня 2020

В моем ngOnInit я проверяю маршрут, делаю кое-что, а затем настраиваю interval

ngOnInit(): void {
    this.routeSubscription = this.route.paramMap.subscribe(x => {
         ...
         // Reload the data every 60 seconds
         interval(60_000)
             .pipe(takeUntil(this.cancelInterval$))
             .subscribe(() => this.rows$ = this.orderService.active())
    })
}

Когда я пытаюсь выполнить модульное тестирование, жасмин прерывается, потому что asyn c метод не вернулся достаточно быстро. Я делаю это (как подописание основного, которое выполняет все обычные TestBed настройки):

describe('when showing active orders', () => {
    beforeEach(() => {
        activatedRoute.setParamMap({})
        fixture.detectChanges()
    })

    it('...', async () => {
        await fixture.whenStable()
        ...
    })

Кажется, что он застрял из-за интервала. Я думал, что могу просто вызвать discardPeriodicTasks() в конце метода beforeEach, но это не работает.

Так что я ищу любой правильный способ справиться с этим при тестировании или способ в производственном коде выполнять интервальный вызов только в том случае, если он не запускается через тестирование.

Angular CLI: 9.0.7
Node: 14.4.0
Angular : 9.1.6

...