У меня есть реагирующий компонент с формой. Я хочу провести модульное тестирование (используя jest и RTL), если форма будет отправлена с правильными данными. Вот мой метод тестирования компонентов и модулей:
Компонент:
class AddDeviceModal extends Component {
handleOnSave(event) {
const { deviceName } = event.target;
const formData = {
deviceName: deviceName.value,
};
this.props.onSave(formData);
}
render() {
return (
<Form onSubmit={this.handleOnSave}>
<Form.Label>Device Name</Form.Label>
<Form.Control name="deviceName" placeholder="Device Name" required />
<Button type="submit">Save Device</Button>
</Form>
);
}
}
Модульный тест:
it("Test form submit and validation", () => {
const handleSave = jest.fn();
const props = {
onSave: handleSave,
};
render(<AddDeviceModal {...props} />);
const deviceNameInput = screen.getByPlaceholderText(/device name/i);
fireEvent.change(deviceNameInput, { target: { value: "AP VII C2230" } });
fireEvent.click(getByText(/save device/i));
});
Однако в handleOnSave()
я получаю сообщение об ошибке, поскольку deviceName
равно undefined
. По некоторым причинам он не может получить значение текстового поля из event.target
. Я делаю что-то не так в приведенном выше коде? Нужна помощь в устранении этой проблемы.