Javascript 如何使用fireEvent.scroll检测滚动位置?-反应测试库
[出于提问的目的,我举了一个假例子,以便更容易理解] 假设我有一个主页组件,当达到页面高度的1/3时,它会切换颜色Javascript 如何使用fireEvent.scroll检测滚动位置?-反应测试库,javascript,reactjs,dom,scroll,react-testing-library,Javascript,Reactjs,Dom,Scroll,React Testing Library,[出于提问的目的,我举了一个假例子,以便更容易理解] 假设我有一个主页组件,当达到页面高度的1/3时,它会切换颜色 // Homepage.js const Home = (props) => { const [toggle, setToggle] = useState(false) useEffect(() => { window.addEventListener('scroll', handleScroll) return () => windo
// Homepage.js
const Home = (props) => {
const [toggle, setToggle] = useState(false)
useEffect(() => {
window.addEventListener('scroll', handleScroll)
return () => window.removeEventListener('scroll', handleScroll)
}, [toggle])
const handleScroll = () => {
const scrollPosition = document.documentElement.scrollTop;
const oneThirdPageHeight = (1 / 3) * document.documentElement.offsetHeight;
if (scrollPosition > onethirdPageHeight) {
return setToggle(true)
}
return setToggle(false)
}
return <div style={{ height: '1500px', color: toggle ? 'blue' : 'red'}}>hello</div>
}
//Homepage.js
const Home=(道具)=>{
const[toggle,setToggle]=useState(false)
useffect(()=>{
window.addEventListener('scroll',handleScroll)
return()=>window.removeEventListener('scroll',handleScroll)
},[切换])
常量handleScroll=()=>{
常量scrollPosition=document.documentElement.scrollTop;
常数三分之一页高度=(1/3)*document.documentElement.offsetHeight;
如果(滚动位置>第三页高度){
返回设置切换(真)
}
返回设置切换(false)
}
打招呼
}
和测试文件
// Homepage.test.js
test('should toggle color when scrolled', () => {
const { getByText } = render(<Homepage />);
const DivEl = getByText('hello');
expect(DivEl).toHaveStyle('color: red');
fireEvent.scroll(window, { target: { scrollY: 800 } });
expect(DivEl).toHaveStyle('color: blue'); // --> failing
});
//Homepage.test.js
测试('滚动时应切换颜色',()=>{
const{getByText}=render();
const DivEl=getByText('hello');
expect(DivEl).toHaveStyle('color:red');
滚动(窗口,{target:{scrollY:800});
expect(DivEl).toHaveStyle('color:blue');//-->失败
});
似乎我无法通过执行firevent.scroll(窗口,{target:{scrollY:800}})
来滚动DOM。我错过了什么?请帮忙,先谢谢你