这是我第一次做测试,但我遇到了麻烦,onChangeText不改变texttinput组件的值
const Example = ({onChangeText, value}) => {
return (<TextInput testID={'input'} onChangeText={onChangeText} value={value} />)
}
test('onChangeText', () => {
const onChangeText = jest.fn()
const value = 'test input'
const { getByTestId } = render(
<Example onChangeText={onChangeText} value={value} />
);
const input = getByTestId('input')
fireEvent.changeText(input, 'uno');
expect(input.props.value).toBe('uno');
});
获得的测试值保持'测试输入'不更改为'uno'
如果我们提供onChangeText道具,我们如何使onChangeText在测试中改变TextInput值的值?
组件接收输入值es props,我假设有一些输入正在使用该值。
因此,这意味着您的组件是不受控制的。在这种情况下,你的测试没有通过也没关系。这不是库的问题,而是代码的问题。 https://github.com/callstack/react-native-testing-library/issues/978
https://reactjs.org/docs/uncontrolled-components.html: ~:文本= % 20 % % 20 % 20控制组件2 c % 20表单,表单% 20值% 20从% 20 % 20 dom。
您可以在这里阅读更多关于受控和非受控组件的信息。