javascript - 模态中的单击事件 - 测试

标签 javascript reactjs jestjs enzyme

尝试对以下代码运行测试,但找不到节点。为ReactJS使用jest和enzyme

 render () {
return (
  this.state.permissionsLoaded ?
  this.state.localPermissions[globals.UI_DATASOURCEDESIGNER] ? 
  this.state.datasourcePermissionsLoaded ?
  this.state.allowCurrentDatasource ?
      <div>
       <Modal isOpen={this.state.addRequestModalOpen} style={shareModal}>
       <div title="Close Window Without Saving" className="sidemodal_addnew_x" onClick={() => {this.closeAddModal()}}><FontAwesome name='xbutton' className='fa-times' /></div>

不断收到以下错误:方法“simulate”应在 1 个节点上运行。找到 0 个。

这是我迄今为止的测试结果:

beforeEach(() => wrapper = mount(<MemoryRouter keyLength={0}><Datasource {...baseProps} /></MemoryRouter>));


 it("Test Click event on Add DataSource ", () => {
  wrapper.find('Datasource').setState({
   permissionsLoaded:true,
   localPermissions:true,
   datasourcePermissionsLoaded:true,
   allowCurrentDatasource:true,
   addRequestModalOpen:true

   })
  wrapper.update();
  wrapper.find('Datasource').find('.sidemodal_addnew_x').simulate('click')

 });

这里是我所在州的列表:

permissionsLoaded: false,
datasourcePermissionsLoaded: false,
allowCurrentDatasource: false,
localPermissions:{
    [globals.UI_DATASOURCEDESIGNER]:false,
  }

最佳答案

好吧,看起来你正试图找到一个节点,如果你提到的所有状态变量都为 true,则该节点将有条件地呈现,但它们都不是(实际上你将它们全部设置为 false 并更新包装器预先)。这意味着找不到可用于模拟点击的 .sidemodal_addnew_x,因此您会收到该错误消息。

如果您想测试该组件是否存在,可以执行以下操作:

expect(wrapper.find('Datasource').find('.sidemodal_addnew_x').exists()).to.equal(false);

如果您确实想测试点击,请确保通过将状态变量设置为 true 来渲染组件 .sidemodal_addnew_x:

it("Test Click event on Close Window Without Saving", (done) => {
  baseProps.onClick.mockClear();
  wrapper.find('Datasource').setState({
    permissionsLoaded:true,
    localPermissions:true,
    datasourcePermissionsLoaded:true,
    allowCurrentDatasource:true,
    addRequestModalOpen:true,
    }, () => {
      wrapper.update();    
      wrapper.find('Datasource').find('.sidemodal_addnew_x').simulate('click');
      done();
    });
});

关于javascript - 模态中的单击事件 - 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55631628/

相关文章:

javascript - 无法在 for 循环中递增变量计数器

html - Mac OSX 上的 Electron 应用程序,用于文件选择的输入

javascript - IntersectionObserverAPI 当所有元素都不可见时返回默认状态

javascript - 将 SVG 组件作为背景图像 react 到 div

javascript - 在 IntelliJ IDEA 中运行 Jest 测试

javascript - 如何用 jest 和 enzyme 模拟 React 组件方法

javascript - 测试子类的方法

javascript - 用于修改页面脚本包含和 JS 的 Chrome 扩展

javascript - 如何在 ReactJS 的嵌套状态下使用所有特定键更改值

javascript - 如何在请求服务器之前安全地转换列表参数过滤器