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();
我目前正在使用 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();