У меня есть компонент React, который использует TextField
из office-ui-fabric-реаги * . Я использую Enzyme / Jest для написания модульных тестов. У меня возникают проблемы при обновлении значения TextField
.
. Я пытался использовать .simulate('change', { target: { value: 'Input Value'} }
.
. Вот упрощенная версия моего компонента:
const FeedbackForm = (props: IFeedbackFormProps): JSX.Element => {
const [comments, setComments] = React.useState<string>('');
const onCommentChange = (_event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue: string): void => {
setComments(newValue);
};
return (
<TextField
value={comments}
onChange={onCommentChange}
/>
);
};
Это мой тест:
it('should enable the submit button when the user enters a comment', () => {
const wrapper = shallow(<FeedbackForm {...mockProps} />);
const commentBox = wrapper.find(TextField);
const submitButton = wrapper.find('[type="submit"]');
commentBox.simulate('change', { target: { value: 'test value' } });
// This button gets enabled when the text area is not empty
expect(submitButton.is('[disabled]')).toBe(false);
});
Пользовательский интерфейс работает, как и ожидалось. Глядя на commentBox.debug()
, value
компонента не меняется.
Я также убедился, что onCommentChange
вызывается при вызове commentBox.simulate(...)
.