Функция Props в тесте не вызывается, хотя все вызываемые условия являются правильными - PullRequest
0 голосов
/ 29 мая 2019

У меня есть форма, и когда я отправляю ее, я вызываю функцию, которая проверяет форму, и, если все в порядке, я вызываю действие 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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...