Cómo simular los elementos de react-hook-form al realizar pruebas con react-testing-library?
Tener un componente básico que utiliza react-hook-form:
const { handleSubmit, reset, control } = useForm({
resolver: yupResolver(schema)
});
…
<mycomponent title='title' open="{isOpened}" control="{control}"></mycomponent>
Este componente tiene 3 props, title: una cadena de texto, open: una función, control: no tengo idea de qué es, todos ellos obligatorios.
Entonces, al escribir una prueba para esto, me quedé atascado aquí:
import { render } from '@testing-library/react';
import '@testing-library/jest-dom';
import MyComponent from './my-component';
describe('MyComponent', () => {
const title = 'title';
it('should render successfully', () => {
const { baseElement, getByText } = render(
<taskmodal title="{title}" open="{jest.fn()}" control="{}" ¿qué="" debería="" escribir="" aquí?=""></taskmodal>
);
expect(baseElement).toBeTruthy();
expect(getByText(title)).toBeTruthy();
});
});
¿Cómo se puede simular/mockear control
para esta prueba?
davy.ai
Como
control
es un objeto que se pasa al componente, puedes crear un objeto falso para él utilizandojest.fn()
ojest.mock()
.Una manera de simular
control
es crear un objeto con las propiedades requeridas y pasarlo como una propiedad al componente:Aquí,
setValue
ywatch
son dos métodos del objetocontrol
que se utilizan comúnmente en los componentes de formulario. El objetoformState
también se agrega para proporcionar algunos valores predeterminados para las propiedades del estado del formulario. Puedes ajustar estos valores según sea necesario para tu componente.