编写依赖于“IntersectionObserver”调用的测试

问题描述 投票:0回答:1

我正在尝试编写一个测试,当元素在视口中时断言。

我正在使用IntersectionObserver API,事实证明,当浏览器可以调用时,对观察者的调用就完成了。

所以问题是,我应该如何处理这样的断言?我应该等一段时间吗?多少毫秒就足够了?是否有事件要知道浏览器何时完成调用观察者?

目前我这样做:

// ... do whatever to make the code observe some elements
document.scrollingElement.scrollTop = window.innerHeight;

// Wait for observer to kick in (tried 1, 5, millis, 10 seems to work)
await new Promise(resolve => setTimeout(resolve, 10));

sinon.assert.calledWith(spy, dom.querySelector(selector));

这有效,但我想知道是否有更好的事情要等待一段时间。

javascript testing browser intersection-observer
1个回答
1
投票

好问题,你应该尝试使用requestAnimationFrame,但使用它两次。

例如:

await new Promise(resolve => requestAnimationFrame(requestAnimationFrame(resolve))) 
© www.soinside.com 2019 - 2024. All rights reserved.