Я новичок в Jest (и вообще тестирую JavaScript). У меня есть Register
компонент, который по сути представляет собой страницу для регистрации пользователя. Когда форма заполнена и нажата кнопка отправки, она будет использовать axios
для отправки POST
запроса на сервер.
Пытаюсь написать тест на эту функциональность. Для этого мне нужно издеваться над axios
. Я написал следующий тест, но при утверждении, что axios
был вызван, я получаю сообщение об ошибке:
expect(jest.fn()).toHaveBeenCalled()
Expected number of calls: >= 1
Received number of calls: 0
Вот мой тест:
jest.mock('axios')
it('should save value when submitted', async () => {
render(
<Register />
);
ReactTestUtils.Simulate.change(field('email'), {
target: { value: '[email protected]', name: 'email'}
})
ReactTestUtils.Simulate.change(field('first-name'), {
target: { value: 'test', name: 'first-name'}
})
ReactTestUtils.Simulate.change(field('last-name'), {
target: { value: 'test', name: 'last-name'}
})
ReactTestUtils.Simulate.change(field('password'), {
target: { value: 'test', name: 'password'}
})
ReactTestUtils.Simulate.change(field('confirm-password'), {
target: { value: 'test', name: 'confirm-password'}
})
const postSpy = jest.spyOn(axios, 'post')
ReactTestUtils.Simulate.submit(form('register'));
expect(postSpy).toHaveBeenCalled();
});
Обычно я заполняю все обязательные поля своей формы, а затем отправляю ее.
Функция, которая обрабатывает отправку в моем Register
компоненте, выглядит так:
const onSubmit = data => {
const res = axios.post("http://localhost/register", data);
}
Есть идеи, что мне не хватает или что я делаю неправильно?
Спасибо
field()
иform()
? - person Phil   schedule 19.07.2021axios.post()
, он вызываетaxios()
, поэтому вашaxios.post
шпион никогда не будет вызван - person Phil   schedule 19.07.2021post
(код для этого вопроса также был обновлен), но я получаю точно такой же результат - person MrCujo   schedule 19.07.2021