Угловая 5 / Jasmine 2 тестовая функция setTimeout только один раз - PullRequest
0 голосов
/ 17 октября 2018

Моя проблема в том, что у меня есть эта функция:

    loopPingAPI() {
    this.pingAPI().then(
        success => {
            this.setConnected(true);
            this.stopPingAPI();

            return true;
        }, error => {
            this.setConnected(false);
            return true;
        });
    this.timer = setTimeout(() => this.loopPingAPI(), 5000);
}

Есть setTimeout (функция запускается каждые 5000 мс), я пытаюсь проверить это так:

      it('should not call the stopPingApi function', fakeAsync(() => {
            connectivityService.loopPingAPI();
            flushMicrotasks();
            expect(connectivityService.stopPingAPI).not.toHaveBeenCalled();
        }));

У меня есть эта ошибка:

Error: 1 timer(s) still in the queue.

Есть ли способ вызывать функцию loopPingApi () только один раз и после, вызывать функцию stopPingApi () (эта функция убивает setTimeout с помощью clearTimeout (this.timer))?

PS: использование tick () / flush () вместо flushMicroTasks () дает тот же результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...