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