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()方法。 所以我无法模仿这个 eventObject 。
我现在在这里被踩了几天。我的印象是技术上无法测试此功能,因为我们无法访问 setDataValue 。
对此有何建议?
答案 0 :(得分:2)
由于simulate
与调用on{propName}
下的函数没什么不同。出于某种原因,这仅适用于标准事件,但最终与您自己调用没有区别:
const eventObject = {setDataValue: jest.fn()}
gGridReact.prop('cellClicked')(eventObect);
expect(eventObject).toHaveBeenCalled()