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元素,