如何在jest中模拟/监视useState hook?

13 浏览
0 Comments

如何在jest中模拟/监视useState hook?

我试图监视useState React hook,但我始终无法通过测试。这是我的React组件:

const Counter = () => {
    const [counter, setCounter] = useState(0);
    const handleClick = () => {
        setCounter(counter + 1);
    }
    return (
        <>
            

{counter}

) }

counter.test.js:

it('正确增加计数器', () => {
    let wrapper = shallow();
    const setState = jest.fn();
    const useStateSpy = jest.spyOn(React, 'useState');
    useStateSpy.mockImplementation((init) => [init, setState]);
    const button = wrapper.find("button")
    button.simulate('click');
    expect(setState).toHaveBeenCalledWith(1);
})

不幸的是,这并不起作用,并且我得到了测试失败的消息:

期望:1
调用次数:0

0