如何使用 refs 测试 React 组件?
How to test react component with refs?
我有一些反应功能组件:
export const Chat = props => {
..............
const messagesRef = useRef(null);
useEffect(() => messages && messagesRef.current.scrollTo(0, 99999), [messages]);
.............
return (
...........
<div className='chat-content__list' ref={messagesRef}>
</div>
............
)
}
我不擅长测试,我只是想测试我的组件的渲染,代码是这样的:
it('Render Messages chat', async () => {
const { container } = render(<Chat ...someProps />)
}
在 运行 这个测试之后,我得到这个错误:TypeError: messagesRef.current.scrollTo is not a function
如何在测试期间使用 refs 以及如何修复我的错误?
Jest React 在名为 jsdom 的浏览器抽象中测试 运行。因为它不是真正的浏览器,所以并非所有功能都已实现。我怀疑 scrollTo
就是这样的一个例子。
例如,此 表明 scrollIntoView
也未实现,要绕过它,您可以为其提供间谍。
Jest 支持为所有测试所需的设置代码提供一个设置文件。您可以考虑将模拟放在那里。
我有一些反应功能组件:
export const Chat = props => {
..............
const messagesRef = useRef(null);
useEffect(() => messages && messagesRef.current.scrollTo(0, 99999), [messages]);
.............
return (
...........
<div className='chat-content__list' ref={messagesRef}>
</div>
............
)
}
我不擅长测试,我只是想测试我的组件的渲染,代码是这样的:
it('Render Messages chat', async () => {
const { container } = render(<Chat ...someProps />)
}
在 运行 这个测试之后,我得到这个错误:TypeError: messagesRef.current.scrollTo is not a function
如何在测试期间使用 refs 以及如何修复我的错误?
Jest React 在名为 jsdom 的浏览器抽象中测试 运行。因为它不是真正的浏览器,所以并非所有功能都已实现。我怀疑 scrollTo
就是这样的一个例子。
例如,此 scrollIntoView
也未实现,要绕过它,您可以为其提供间谍。
Jest 支持为所有测试所需的设置代码提供一个设置文件。您可以考虑将模拟放在那里。