如何通过玩笑或其他工具在功能组件中使用useRef挂钩测试功能?

时间:2019-03-12 09:23:00

标签: javascript reactjs function jestjs enzyme

我有一个功能组件,我可以将一些登录功能导出到另一个文件中进行独立测试,但是此功能组件中的某些功能无法执行此操作,因为当我使用它们时,它们具有useRef钩子(或类似实例变量)用覆盖率进行测试,这些功能总是无法测试的,我该如何测试thouse类型的功能,我试图用.getInstance()API这样的方式开玩笑,但由于功能组件不是类,以便功能组件中的功能不是类的属性

const ListStackConatiner = (props) => {

  const { onConfirmInputDialog, onCancelInputDialog } = props
  const [ inputValue ] = useRef("")
  const [ state, dispatch ] = useReducer(reducer, props, init)
  // state
  const { topStackItems, bottomStackItems, open } = state

  const stacks = [{
    type: 'MOVE_ITEM_FROM_TOP_TO_BOTTOM',
    items: topStackItems
  },{
    type: 'MOVE_ITEM_FROM_BOTTOM_TO_TOP',
    items: bottomStackItems
  }]

  const onChangeInput = (e) => {
     const { target } = e
     const { value } = target
     inputValue.current = value
  }

  const onConfirm = () => {
    onConfirmInputDialog && onConfirmInputDialog(inputValue.current)
    dispatch({type: "CLOSE_INPUTDIALOG"})
  }

  const onCancel = () => {
    onCancelInputDialog && onCancelInputDialog(inputValue.current)
    dispatch({type: "CLOSE_INPUTDIALOG"})
  }

  return(
    <TextInput
      onChangeInput={onChangeInput}
      onConfirm={onConfirm}
      onCancel={onCancel}
    />
    )
}

0 个答案:

没有答案