javascript - 模态内的单击事件:无法读取 null 的属性“单击”
问题描述
试图弄清楚为什么我的点击测试事件不起作用。我对同一个文件的另一个点击事件应用了相同的设置并且它工作。使用 Jest 和 Enzyme 进行 React js 目标:单击事件能够捕获节点并测试通过
到目前为止,这就是我的测试用例:
测试.js
describe("Test Modal Components and Events ", () => {
let mountingDiv;
let wrapper;
beforeEach(() => {
wrapper = mount(<MemoryRouter keyLength={0} initialEntries={["/add"]} ><Policies {...baseProps} /></MemoryRouter>);
mountingDiv = document.createElement('div');
document.body.appendChild(mountingDiv);
})
测试用例
it('Test click event on Close - Modal', () => {
ReactModal.setAppElement('body');
wrapper = mount( <ReactModal isOpen></ReactModal>,
{attachTo: mountingDiv}
);
wrapper.setState({
quickFilterModalOpen: false,
})
wrapper.update()
expect(!!document.body.querySelector('.fullmodal')).toEqual(true);
expect(!!document.body.querySelector('.sidemodal_addnew_x')).toEqual(true)
document.querySelector("#closemodal-id").click();
});
这是file.js
<Modal isOpen={this.state.quickFilterModalOpen} style={descriptionModalStyle}>
<div>
<div className='fullmodal'>
<div className='sidemodal_addnew_x' id="closemodal-id" onClick={this.closeModal}>
解决方案
modal 应该是可见的,以便单击关闭按钮。设置quickFilterModalOpen
为 true 并用于.find(selector)
查找要单击的元素。(https://airbnb.io/enzyme/docs/api/ReactWrapper/find.html)
wrapper.setState({
quickFilterModalOpen: true,
})
wrapper.update()
wrapper.find("#closemodal-id").simulate("click");
推荐阅读
- javascript - 类型错误:setOpenLoginDialog 不是函数
- java - 如何将 UTC 时区转换为英国时区(“欧洲/伦敦”)
- selenium - 使用多处理保持 chrome 关闭
- javascript - 如何创建一个询问您是否确定要重置的重置按钮
- python-3.x - python - 如何使用一列数组 to_csv()
- flutter - 有什么方法可以使用一些默认代码创建颤振项目吗?
- python - 从一个文件中对多个文件进行 Doctest
- string - 如何动态更改 Kotlin 循环中的条件
- android - Mpandroidchart 文本未正确显示在折线图的 x 轴上
- powerbi - 日期层次结构选项未显示