Является ли setImmediate хорошим решением для тестирования с использованием jest после асинхронных обновлений setState? - PullRequest
0 голосов
/ 25 августа 2018

Я использовал следующий шаблон для проверки условий после обновления состояния в моих компонентах, используя react.

await expect(new Promise((resolve) => {
  let intervalId = setInterval(() => {
    component.update();

    if (myCondition) {
      clearInterval(intervalId);

      resolve(true);
    }
  }, 25);
})).resolves.toBe(true);

Это хорошо работает и гарантированно сработает, но писать это довольно сложно и многословно.

Я искал возможно использование setImmediate вместо setInterval. Это предотвратит опрос (и позволит мне проверить отрицательные утверждения, которые в настоящее время невозможны без введения другого уровня многословия с try / catch), но гарантируется ли работа с react асинхронными механизмами, такими как setState

Например, что произойдет, если react решит пакетировать, попытаться пакетировать некоторые события setState вместе или что-то в том же духе, и setImmediate будет помещен в очередь цикла событий до того, как react отправит действия обновления состояния?

Я не хочу вводить в свои тесты бесполезность.

...