Проблема
Я создал очень простой пример кода для лучшего понимания.Вот код, который я хочу протестировать (содержащий простой ответный хук):
const TodoHeader = ({ handleSubmit }) => {
const [value, setValue] = useState("");
return (
<form onSubmit={handleSubmit} data-testid="form">
<input
type="text"
placeholder="Your Todo.."
onChange={e => setValue(e.target.value)}
value={value}
data-testid="input"
/>
</form>
);
};
Я хочу проверить, выполнится ли переданная в handleSubmit
проп.Итак, я настроил этот тест:
it("should call the passed in onSubmit function", () => {
const mockFn = jest.fn();
const { getByTestId } = render(
<TodoHeader handleSubmit={mockFn} />
);
const form = getByTestId("form");
fireEvent.submit(form);
// This will fail (did not get executed)
expect(mockFn).toHaveBeenCalled();
});
Это как-то связано с реакционными хуками?Я также попытался изменить его, но тот же результат.Я не знаю, почему это не пройдет.Сообщение об ошибке:
Ожидается, что фиктивная функция была вызвана, но она не была вызвана.
Вот коды и окно, если вы хотите поиграться с ними:
https://codesandbox.io/s/ypok50n709 (TodoHeader.js
и TodoHeader.test.js
)