field.value
устанавливается один раз перед всеми вашими тестами, используя текущее значение функции mockSetFieldValue
, которая возвращает пустую строку. Поэтому изменение функции mockSetFieldValue
не имеет никакого эффекта.
Вы должны иметь возможность установить field.value
в onChange
, что вы можете сделать так:
onChange: (e) => {
field.value = e.target.value;
},
Это Вероятно, лучше смоделировать всю функцию onChange
:
const mockOnChange= jest.fn();
beforeAll(async () => {
field = {
name: 'password',
value: '',
onChange: mockOnChange,
};
//...
});
Затем в тесте:
mockOnChange.mockImplementationOnce((e) => { field.value = e.target.value });
fireEvent.change(input, { target: { value: 'foo123' } });