Estoy tratando de probar un TextInput verificando su valor después de ingresar una cadena, pero no funciona. Cualquier ayuda sería apreciada.
Aquí está el código:
import React from 'react' import { TextInput } from 'react-native' import { fireEvent, render } from "@testing-library/react-native" test('<TextInput/>, () => { const { getByTestId } = render( <TextInput testID="input" /> ); const input = getByTestId("input"); fireEvent.changeText(input, "123"); expect(input.value).toBe("123"); })La prueba falla con el mensaje:
Expected: "123" Received: undefinedCreo que su ejemplo no funciona porque no está controlando la entrada. Intente agregar un value y una función onChangeText . Algo como:
function Example() { const [value, setValue] = useState('') return <TextInput value={value} onChangeText={setValue} testID="input" /> } test('Should apply the value when changing text', () => { const { getByTestId } = render(<Exampler />); const input = getByTestId('input'); fireEvent.changeText(input, '123'); expect(input.props.value).toBe('123'); }); Además, debe verificar input.props.value en lugar de input.value Espero que ayude.
Voy a sugerir algunas cosas para ayudarlo a llegar a la solución,
TextInput tiene un accesorio llamado testID ? Utiliza getByTestId posteriormente, que necesita un valor de data-testid en el elemento. Así que por favor asegúrese de esto primero.getByPlaceholderText o similar. Una vez que pueda obtener el elemento correctamente, y después de fireEvent , el valor ciertamente debería actualizarse y la aserción tendría éxito.