在React中测试useState

时间:2019-06-14 16:45:28

标签: reactjs jestjs react-hooks

我正在尝试测试对useState挂钩的调用,但未调用其说法。 我正在记录他们触发了模拟事件,并调用了我的处理程序,并且触发了处理程序中useState的设置,但是我的间谍由于某种原因无法正常工作。

const setState = jest.fn();
const useStateSpy = jest.spyOn(React, 'useState');
useStateSpy.mockImplementation(init => [init, setState]);

test('input change event with less than 3 characters', async () => {
  const wrapper = shallow(
    <MyComp {...props} />
  );
  const event = {
    target: { value: 'me' },
  };
  const input = MyComp.find('input');
  input.simulate('change', event);
  jest.runAllTimers();
  await expect(setState).toHaveBeenCalled();
});

setState给我警告。

  

预期已调用模拟函数,但未调用。

1 个答案:

答案 0 :(得分:0)

您需要使用3个字符将输入的onChange存根。这应该贯穿您的事件代码并更新您的状态。

然后,您需要声明代码以返回预期的字符。在这里进行反应测试,您也不需要这样做!

请提供您的输入代码和事件处理程序。