Me gustaría preguntar si tengo la variable useState en el componente que se usa como una condición que determina que el elemento dentro aparecerá o no. ¿Cómo burlarse de la variable? Para que pueda probar el elemento dentro de la condición si el valor es 'iniciar sesión'.
const [dataHistory,seDataHistory] = useState("") const [data,setData] = useState("firstTimeLogin") const func2 = () => { getData({ item1: "0", }). then((res) => { funct(); }) } const funct = () => {setData("login")} return {data === "firstTimeLogin" && ( <div><button onClick="funct2()">next</button></div> )} {data === "login" && ( <div>flow login</div> )}En primer lugar, debe agregar data-testid para su botón
{data === "firstTimeLogin" && ( <div><button onClick="funct2" data-testid="next-button">next</button></div> )} Llamó a onClick="funct2()" que es activar funct2 inmediatamente después de volver a renderizar, así que lo modifiqué a onClick="funct2" .
Tenga en cuenta que también puede usar el next contenido en el botón para el clic del evento, pero prefiero usar data-testid es más fijo que el next contenido.
En su archivo de prueba, debe getData y llamar a fireEvent.click para activar funct2()
import { screen, fireEvent, render } from '@testing-library/react'; //'/getData' must be the actual path you're importing for `getData` usage jest.mock('/getData', () => { return { getData: () => new Promise((resolve) => { resolve('') }) // it's mocked, so you can pass any data here } }) it('should call funct', async () => { render(<YourComponent {...yourProps}/>) const nextButton = await screen.findByTestId("next-button"); //matched with `data-testid` we defined earlier fireEvent.click(nextButton); //trigger the event click on that button const flowLoginElements = await screen.findByText('flow login'); //after state changes, you should have `flow login` in your content expect(flowLoginElements).toBeTruthy(); })Puede crear un botón y hacer clic en la función de llamada de botón ()