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