【问题标题】:How to test event handlers Using enzyme如何使用酶测试事件处理程序
【发布时间】:2017-03-28 16:39:40
【问题描述】:

我们如何使用酶浅渲染测试点击处理程序

class Example extends React.Component {
  render() {
    const {
      message
    } = this.props
    return <Alert key={message.id} bsStyle={message.state} onDismiss={()=>this.handleAlertDismiss(message.id)}>{message.text}</Alert>
  }
  handleAlertDismiss = (id) = > {
    console.log(id)
  }
}

我们如何测试添加到Alert 组件中的onDismiss 函数。

【问题讨论】:

    标签: jestjs enzyme


    【解决方案1】:

    创建组件并像这样调用dismiss函数。

    const log = jest.fn();
    global.console = {log}
    example = shallow(<Example message={{id: 'test'}}/>); 
    example.props('onDismiss')() //just find the dismiss prop and call the function
    expect(log).toHaveBeenCalledWith('test')
    

    你的例子的问题是没有什么可以测试的。为了使它与您的 console.log 示例一起使用,我使用间谍模拟 console.log,可以对其进行测试以检查它是否使用正确的参数调用。

    【讨论】:

    • 是的,我实际上不确定我会如何调用 onDismiss ,如果它像 {message. text} 而不是渲染方法中的回调,我会测试 wrapper.instance().handleAlertDismissed 。我的意图不是关于 console.log .sorry 如果它误导了
    • 好的,但是您的问题得到解答了吗?通常你只需搜索你的组件找到道具并调用它。你也可以使用simulate,它的作用基本相同。 airbnb.io/enzyme/docs/api/ShallowWrapper/simulate.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-02
    • 2015-04-19
    • 2022-01-05
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多