Является ли setImmediate хорошим решением для тестирования с использованием jest после асинхронных обновлений setState?

Я использовал следующий шаблон для проверки условий после обновления состояния в моих компонентах с помощью 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 рассылает действия по обновлению состояния?

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

0 ответов

Другие вопросы по тегам