我有一个表单,当我提交她时,我调用一个验证表单的函数,如果一切正常,我将调用一个带有API的redux-saga操作。
当我对此进行测试时,我会监视redux函数,并为输入字段设置一些通过验证的值,并且我希望该函数与spy一起被调用,但没有被调用。
我试图放置一些控制台日志以查看我在做什么,并且字段值已设置并且具有调用函数的所有条件,但间谍却说没有被调用。
我放置异步并等待功能,代码和测试,但这并不能解决我的问题。
在我的表单中,我有一个函数
df1['New_Date'] = [x-timedelta(days=2) if x.weekday()==6 else x for x in df1['Loan Date Negotiation']]
和我的测试功能
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);
}
}
我希望已调用该函数,但这从未发生,并且ii不知道为什么。
我将控制台日志放在函数的第一行中,并向我显示值:
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