如何根据useState的值测试结果

时间:2019-09-25 10:37:17

标签: react-hooks react-testing-library

我有一个像这样的组件

const Component = ({callback}) => {

  const [selected, setSelected] = useState(false);


  const increment = () => {
    if(selected) {
      callback()
    } else {
      do something else...
    }
  }

}

如何使用react testing库和jest测试该回调是否正在被调用?我在网上阅读的所有内容都说您应该测试DOM以测试状态,但是我并不是真正地测试状态,而是基于状态的值进行测试。

1 个答案:

答案 0 :(得分:0)

您可以将回调作为道具传递:

const callback = jest.fn()
const { getByText } = render(<Component callback={callback} />)
fireEvent.click(getByText('Submit'))
expect(callback).toHaveBeenCalledTimes(1)
expect(callback).toHaveBeenCalledWith()

以相同的方式,您可以测试何时selectedfalse时未调用callback