Javascript 如何使用fireEvent.scroll检测滚动位置?-反应测试库

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

[出于提问的目的,我举了一个假例子,以便更容易理解]

假设我有一个主页组件,当达到页面高度的1/3时,它会切换颜色

// 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。我错过了什么?请帮忙,先谢谢你