有什么方法可以将传递给函数onClick的数据属性以开玩笑的方式分解?

handleClick()是我想测试的函数。

this.state = {
  expanded: {},
}     
handleClick = (e) => {
const { dataset } = e.target

this.setState((prevState) => ({
  expanded: {
    ...prevState.expanded,
    [dataset.id]: !prevState.expanded[dataset.id],
  },
}))}

handleClick函数和dataId作为一个道具传递给一个Icon子组件。

<Icon
          icon={
            this.state.expanded[this.props.id] === false ? "plus" : "minus"
          }
          size="sm"
          dataId={this.props.id}
          onClick={this.handleClick}
        />

handleClick()函数在图标被按下时被调用。

const Icon = props => {
      const { icon, size, dataId = null, onClick = null } = props
      return (
               <i
                 className={`fa fa-${icon} fa-${size}`}
                 data-id={dataId}
                 onClick={onClick}
               />
             )
     }

这是我对handleClick()的测试案例。

it("should update state when handleClick is invoked", () => {
      const mockExpanded = {}
      mockExpanded[initialProps.id] = false
      wrapper.setState({ expanded: mockExpanded })

      const mockEvent = {
       target: wrapper.find("Icon").dive().find("i").debug(), //need to pass target value as 
       an object
      }
      wrapper.instance().handleClick(mockEvent)
      expect(wrapper.state().expanded[initialProps.id]).toBe(true)   })

即使将mockEvent作为目标对象传递给handleClick(e),测试用例似乎也无法反构data-id属性。

TypeError: Cannot read property 'id' of undefined

  27 |       expanded: {
  28 |         ...prevState.expanded,
> 29 |         [dataset.id]: !prevState.expanded[dataset.id],
     |                  ^
  30 |       },
  31 |     }))
  32 |   }

请建议在jest测试用例中重构数据集的方法或测试handleClick(e)方法的适当方法。

解决方案:

it("should update state when handleClick is invoked", () => {
const mockExpanded = {}
mockExpanded[initialProps.id] = false
wrapper.setState({ expanded: mockExpanded })

const mockEvent = {
  target: { dataset: { id: initialProps.id } },
}
wrapper.instance().handleClick(mockEvent)

expect(wrapper.state().expanded[initialProps.id]).toBe(true)

})

给TA打赏
共{{data.count}}人
人已打赏
解决方案

如果地址字段为空,如何将地址添加为NA,否则显示为地址。

2022-5-13 9:00:19

解决方案

使用c#和Epplus将excel信息创建为datatable和dataset。

2022-5-13 9:00:21

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索