fireEvent 没有在 react-testing-library 中正确调用事件

fireEvent not properly calling event in react-testing-library

我目前正在使用 Jest & react-testing-library 测试输入。我正在尝试测试 onChange 函数是否在我的输入字段发生变化时触发。这是我的代码示例:

const placeHolder = 'first name';
const onChange = jest.fn();

test('<InputText/>', () => {

  const {getByPlaceholderText} = render(
    <InputText placeholder={placeHolder} onChange={onChange} />
  );

  const input = getByPlaceholderText(placeHolder);

  fireEvent.change(input, {
    target: {value: 'pls work'},
  });

  expect(onChange).toHaveBeenCalledTimes(1);
});

这是我 运行 这个测试时在终端中得到的结果:

expect(jest.fn()).toHaveBeenCalledTimes(1)

Expected mock function to have been called one time, but it was called zero times.

我在其他测试中使用了 fireEvent.click() 函数,但没有任何问题,但 fireEvent.change() 似乎对我不起作用。

事实证明,我的 <InputText/> 组件接受了一个 onChangeFunc 道具,而我试图给它一个常规的 onChange 道具。一旦我意识到这一点并给它正确的支持,它就解决了这个问题。

而不是调用这个

expect(onChange).toHaveBeenCalledTimes(1);

你可以试试

expect(onChange).toHaveBeenCalled();