Угловое тестирование: тик против flushMicrotasks в блоке fakeAsync - PullRequest
0 голосов
/ 17 сентября 2018

Насколько я понимаю, читая документы Angular , вызов tick() сбрасывает (поддерживаемые) макро-задачи и очереди микро-задач в блоке fakeAsync. В таком случае, я полагаю, что вызов tick() будет таким же, как и некоторые дополнительные вызовы + вызов flushMicrotasks().

.

Вопрос в том, есть ли случай, когда мне следует использовать:

it('should pass', fakeAsync(() => {
  // given some setup...

  doSomethingAsynchronous();
  flushMicrotasks();

  // do some assertions...
}));

вместо

it('should pass', fakeAsync(() => {
  // given some setup...

  doSomethingAsynchronous();
  tick();

  // do some assertions...
}));

1 Ответ

0 голосов
/ 27 февраля 2019

Выдержка из статьи здесь .

Макрозадачи ставятся в очередь setTimeout, setInterval, setImmediate и т. Д. микротрубы по process.nextTick, Promises, MutationObserver и т. д.

Так что если вы используете setTimeouts, setInterval и т. Д., Тогда используйте tick (), а если вы используете некоторые обещания, то вы можете использовать либо tick (), либо flushMicrotasks ().

...