У меня есть форма, и когда я отправляю ее, я вызываю функцию, которая проверяет форму, и, если все в порядке, я вызываю действие redux-saga с API внутри.
Когда я тестирую это, я шпионю за редуксной функцией и устанавливаю поля ввода с некоторым значением, которое проходит проверку, и я ожидаю, что функция с шпионом была вызвана, но не вызвана.
Я попытался поставить какой-нибудь консольный журнал, чтобы увидеть, что я делаю неправильно, и значения полей установлены и есть все условия для вызова функции, но шпион сказал, что не вызывался.
Я поставил async и жду функции, кода и теста, но это не решило мою проблему.
В моей форме у меня есть функция
function loginUser(event) {
event.preventDefault();
let error = false;
const { field1, field2, field3 } = values;
console.log(values);
// settings errors in each input field
/* my logic is here, if has error, the var error is setted to true*/
// if no errors, fetch login
if (!error) {
console.log('Error:', error);
fetchLogin(domain, user, password);
}
}
и моя тестовая функция
test('submit ok', () => {
const spy = jest.spyOn(Comp.props(), 'fetchLogin');
const form = Comp.find('form');
// setFieldValue is a passed in props by Formik Lib
Comp.props().setFieldValue('field1', 'some value');
Comp.props().setFieldValue('field2', 'some value');
Comp.props().setFieldValue('field3', 'some value');
form.simulate('submit', { preventDefault() {} });
console.log(spy);
expect(spy).toBeCalled();
});
Я ожидаю, что эта функция была вызвана, но это никогда не происходит, и я не знаю почему.
Я помещаю консольный журнал в первую строку функции и показываю мне значения:
console.log src/pages/Login/LoginForm.jsx:128
{ field1: 'some value',
field2: 'some value',
field3: 'some value' }
И поставить консольный журнал перед функцией fetchLogin
:
console.log src/pages/Login/LoginForm.jsx:158
Error: false
Но тест показывает мне:
Expected mock function to have been called, but it was not called.