Тест Angular FakeAsync не выполняется при использовании тика без времени и асинхронности - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть такая структура:

this.activityExecuted$.subscribe( (isTrue) => {

  this.myMethod(isTrue);
});

myMethod(isTrue: boolean): Promise<void> {
    await this.backendService.resetFunctions();


      if(isTrue) {
        this.backendService.requestTrueFor(Activities.SomeActivity);
      }

}

И вот этот тест:

test('should call requestForTrue', () => {
    activityExecuted$$.next(true);
    tick();

    verify(BackendServiceMock.requestTrueFor(Activities.SomeActivity)).once();
  }));

BackendServiceMock это макет ts-mockito.

when(BackendServiceMock.resetFunctions()).thenReturn();

Тест не пройден, если я не поменяю tick(); на tick(1000). Если я пишу что-то меньше, чем 1000, это терпит неудачу, и я не понимаю, почему ...

Когда я отлаживаю тест с помощью tick(), я никогда не захожу в подписку. С 1000 да.

...