Javascript React Jest,添加内存路由器后按钮单击不起作用

Javascript React Jest,添加内存路由器后按钮单击不起作用,javascript,reactjs,jestjs,Javascript,Reactjs,Jestjs,最近,我不得不将一个类组件转换为使用钩子,在此过程中,我还必须调整该组件的jest测试。其中一个测试是通过单击按钮打开一个模式,但在渲染中包装MemoryRouter后,该按钮似乎不再打开模式。我还不熟悉开玩笑的测试,所以我不太清楚是什么导致了这个错误 我现在所拥有的: import*as React from'React'; 从“react dom”导入{render,unmountComponentAtNode}; 从“react路由器”导入{MemoryRouter}; 从'react d

最近,我不得不将一个类组件转换为使用钩子,在此过程中,我还必须调整该组件的jest测试。其中一个测试是通过单击按钮打开一个模式,但在渲染中包装
MemoryRouter
后,该按钮似乎不再打开模式。我还不熟悉开玩笑的测试,所以我不太清楚是什么导致了这个错误

我现在所拥有的:

import*as React from'React';
从“react dom”导入{render,unmountComponentAtNode};
从“react路由器”导入{MemoryRouter};
从'react dom/test utils'导入{act};
从“../../Context”导入{Context};
从“../specs/mockData/device”导入{fakeEquipment};
从“../Equipment/EquipmentContainer”导入设备容器;
const mockRouter:any={};
常量mockRouterMatch:任意={
参数:{}
};
let容器:Element=null;
在每个之前(()=>{
//将DOM元素设置为渲染目标
container=document.createElement('div');
文件.正文.附件(容器);
});
之后(()=>{
//退出时的清理
卸载组件节点(容器);
容器。移除();
container=null;
});
描述('设备容器',()=>{
常量上下文对象={
fetch:(url:any,index:any)=>{},
权限:['DepartmentalAdmin','Admin'],
团队:{id:1,名称:'team',slug:'team'},
标签:[]
};
它('显示设备详细信息',异步()=>{
mockRouter.push=()=>{
console.log('Nothing');
};
mockRouterMatch.params={
行动:"详情",,
id:24//测试设备id
};
等待动作(异步()=>{
//监视上下文的获取处理程序以返回假设备
开玩笑
.spyOn(contextObject,'fetch')
.mock实现(()=>Promise.resolve(fakeEquipment));
//在此处添加上下文提供程序很重要,因为它包括权限和获取信息
渲染(
,
容器
);
});
const detailButton=container.querySelectorAll('button')[1];
detailButton.click();
const details=document.querySelector('.modal content').textContent;
expect(details).toContain('Dell Desktop');//显示确认名称
expect(details).toContain('Monitor');//显示确认注释
})};
在添加
MemoryRouter
之前,仅当
EquipmentContainer
是一个类时,测试才起作用,但在添加
MemoryRouter
之后,测试只是中断了,模式没有呈现。我尝试将
初始条目
添加到
MemoryRouter
中,但也不起作用