我一直在使用以下模式在我的组件中使用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
我不想在我的测试中引入片状。