使用Jest和Enzyme模拟自定义事件


class AgGridWrapper extends React.Component {
  render() {
    return <AgGridReact onCellClicked={this.onCellClicked.this(bind)}
  }
  onCellClicked= (event) = > {
    event.setDataValue(newValue);
  }
}
我有一个关于AgGridReact

的包装器组件AgGridWrapper(AgGridReact是一个节点模块,有助于创建HTML网格(。在此示例中,当我单击 AgGrid 上的任何单元格时,它将更改单元格的值。

我想测试这个 onCellClicked 事件。 所以我做了以下工作。

const wrapper= shallow(<AgGridWrapper />);
const agGridReact = wrapper.find(AgGridReact);
const eventObject={};
agGridReact.simulate('cellClicked',eventObect);

我的目的是模拟cellClicked事件并检查单元格的值是否被更改。但是在这里我无法访问 agGridReact 的 setDataValue(( 方法。所以我无法模拟这个事件对象

我在这里被刺了几天了。 而且我的印象是,从技术上讲,不可能测试此功能,因为我们无法访问 setDataValue

对此有什么建议吗??

正如simulate所做的没有什么不同,只是调用一个存在于on{propName}下的函数。出于某种原因,这仅适用于标准事件,但最终与自己调用它没有什么不同:

const eventObject = {setDataValue: jest.fn()}
gGridReact.prop('cellClicked')(eventObect);
expect(eventObject).toHaveBeenCalled()

最新更新