【问题标题】:fireEvent not properly calling event in react-testing-libraryfireEvent 未正确调用 react-testing-library 中的事件
【发布时间】:2019-02-16 05:46:18
【问题描述】:

我目前正在使用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() 似乎对我不起作用。

【问题讨论】:

标签: reactjs jestjs react-testing-library


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    而不是调用这个

    expect(onChange).toHaveBeenCalledTimes(1);
    

    你可以试试

    expect(onChange).toHaveBeenCalled();
    

    【讨论】:

      猜你喜欢
      • 2019-08-31
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-17
      • 1970-01-01
      相关资源
      最近更新 更多