ユーザーが「Enter」キーを押したときにフォームが送信されることをテストしようとしています。 Submit
ボタンを押したときのテストに合格していますが、フォームがキーボードで送信されることも確認したいと思います(convenienceおよびa11y)。
test("should submit when pressing enter", () => {
const handleSubmit = jest.fn();
const { getByLabelText } = render(<App handleSubmit={handleSubmit} />);
const input = getByLabelText("Name:");
fireEvent.change(input, { target: { value: "abc" } });
fireEvent.keyPress(input, { key: "Enter", code: 13, charCode: 13 });
expect(handleSubmit).toHaveBeenCalled();
});
これが CodeSandbox であり、必要なコードは最小限です。
キーボードの表示/非表示をシミュレートするには、まず入力に焦点を当て、次に入力をシミュレートします。このように、onSubmitEditing
イベントを発生させて、キーボードで押された送信ボタンをシミュレートできます。
import { fireEvent } from '@testing-library/react-native'
const input = getByTestId('input');
fireEvent.focus(input);
fireEvent.changeText(input, 'hello world')
fireEvent.submitEditing(input);