Javascript 在使用Jest/Ezyme进行测试时,无法访问useEffect钩子中的DOM
在我的Javascript 在使用Jest/Ezyme进行测试时,无法访问useEffect钩子中的DOM,javascript,reactjs,leaflet,react-hooks,Javascript,Reactjs,Leaflet,React Hooks,在我的useffecthook中,我初始化了一张传单地图。一切正常。但在测试中,它显示“未找到映射容器”。为了确认,我尝试了console.log(document.getElementById('mapid'))。它在我运行我的应用程序时查找元素,但也不在测试中。当我试图在useffect中访问DOM时,它似乎还没有呈现出来 这是我的useEffect代码: useEffect(() => { console.log(document.getElementById('mapid
useffect
hook中,我初始化了一张传单地图。一切正常。但在测试中,它显示“未找到映射容器”。为了确认,我尝试了console.log(document.getElementById('mapid'))
。它在我运行我的应用程序时查找元素,但也不在测试中。当我试图在useffect
中访问DOM时,它似乎还没有呈现出来
这是我的useEffect代码:
useEffect(() => {
console.log(document.getElementById('mapid'))
map.current = Leaflet.map('mapid').setView([46.378333, 13.836667], 12)
}, [])
这是相应的测试:
describe('initialise map', () => {
it('render map', () => {
const MapComponent = () => <Provider store={store}><Map /></Provider>
const component = mount(<MapComponent />)
expect.some.really.unexpected.things
})
})
description('初始化映射',()=>{
它('渲染贴图',()=>{
常量映射组件=()=>
常量组件=挂载()
期待。一些。真的。意想不到的事情
})
})
测试时如何在
useffect
中访问DOM?我没有检查DOM,而是在useffect中发送了Redux操作:
it('should initialise map without markers', () => {
const MapComponent = () => <Provider store={store}><Map /></Provider>
mount(<MapComponent />)
const [{type: actionType}] = store.getActions()
expect(actionType).toEqual('ADD_MAP')
})
it('应该初始化没有标记的地图',()=>{
常量映射组件=()=>
挂载()
const[{type:actionType}]=store.getActions()
expect(actionType).toEqual('ADD\u MAP'))
})
我无法访问测试中的裁判。我认为这是因为实际的
映射
组件被包装在提供程序
中,因此我无法访问装载组件上的映射
的引用。我最终没有检查DOM,而是在useEffect中发送了Redux操作:
it('should initialise map without markers', () => {
const MapComponent = () => <Provider store={store}><Map /></Provider>
mount(<MapComponent />)
const [{type: actionType}] = store.getActions()
expect(actionType).toEqual('ADD_MAP')
})
it('应该初始化没有标记的地图',()=>{
常量映射组件=()=>
挂载()
const[{type:actionType}]=store.getActions()
expect(actionType).toEqual('ADD\u MAP'))
})
我无法访问测试中的裁判。我认为这是因为实际的
映射
组件被包装在提供者
中,因此我无法在安装的组件上访问映射
的引用。使用引用这是否回答了您的问题?看看这篇文章,它解释了如何访问useffect
hook中的dom元素,使用ref这是否回答了您的问题?查看这篇文章,它解释了如何访问useffect
hook中的dom元素,