2
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 。

对此有何建议??

4

1 回答 1

3

simulate仅调用位于on{propName}. 出于某种原因,这仅适用于标准事件,但最终与您自己调用它没有什么不同:

const eventObject = {setDataValue: jest.fn()}
gGridReact.prop('cellClicked')(eventObect);
expect(eventObject).toHaveBeenCalled()
于 2018-04-11T16:13:39.047 回答