Я использую шутливые тесты для тестирования моего проекта React, написанного в #typescript, созданном с помощью Create React App. Я использую react-testing-library
. У меня есть компонент формы, который показывает alert
, если форма отправлена пустой. Я хотел проверить эту функцию (возможно), шпионя / издеваясь над window.alert
, но она не работает.
Я пытался использовать jest.fn()
, как предлагается во многих ответах SO, но это тоже не работает.
window.alert = jest.fn();
expect(window.alert).toHaveBeenCalledTimes(1);
Вот как я это реализовал: Form.tsx
async handleSubmit(event: React.FormEvent<HTMLFormElement>) {
// check for errors
if (errors) {
window.alert('Some Error occurred');
return;
}
}
Вот как я создал тест библиотеки React + Jest + реагировать на тестирование библиотеки: Form.test.tsx
it('alerts on submit click', async () => {
const alertMock = jest.spyOn(window,'alert');
const { getByText, getByTestId } = render(<Form />)
fireEvent.click(getByText('Submit'))
expect(alertMock).toHaveBeenCalledTimes(1)
})