Напишите тесты, которые полагаются на вызовы `IntersectionObserver` - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь написать тест, который утверждает что-то, когда элемент находится в области просмотра.

Я использую API IntersectionObserver, и получается, что вызовыНаблюдатели заканчивают, когда браузер может их создать.

Итак, вопрос в том, как мне подходить к такому утверждению?Должен ли я просто подождать какое-то время ?Сколько миллисекунд достаточно?Есть ли событие, чтобы узнать, когда браузер завершил вызов наблюдателей?

В настоящее время я делаю это так:

// ... 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));

Это работает, но мне интересно, есть ли что-то лучшежди, чем просто какое-то время .

1 Ответ

0 голосов
/ 05 марта 2019

Хороший вопрос, вы должны попытаться использовать requestAnimationFrame, но используйте его дважды.

, например:

await new Promise(resolve => requestAnimationFrame(requestAnimationFrame(resolve))) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...