我有一个像这样的组件
const Component = ({callback}) => {
const [selected, setSelected] = useState(false);
const increment = () => {
if(selected) {
callback()
} else {
do something else...
}
}
}
如何使用react testing库和jest测试该回调是否正在被调用?我在网上阅读的所有内容都说您应该测试DOM以测试状态,但是我并不是真正地测试状态,而是基于状态的值进行测试。
答案 0 :(得分:0)
您可以将回调作为道具传递:
const callback = jest.fn()
const { getByText } = render(<Component callback={callback} />)
fireEvent.click(getByText('Submit'))
expect(callback).toHaveBeenCalledTimes(1)
expect(callback).toHaveBeenCalledWith()
以相同的方式,您可以测试何时selected
为false
时未调用callback
。