Open
Description
Hi!, Im starting to test my hooks (in a POC stage), I have a simple test that works but I get the following warning that I dont know how can it solved 🤔
Warning: You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);
at console.error (node_modules/@testing-library/react-hooks/lib/core/console.js:19:7)
at printWarning (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:68:30)
at error (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:44:5)
at node_modules/react-test-renderer/cjs/react-test-renderer.development.js:15297:13
at tryCallOne (node_modules/promise/lib/core.js:37:12)
at node_modules/promise/lib/core.js:123:15
at flush (node_modules/asap/raw.js:50:29)
this is my hook
import {useState, useEffect} from 'react';
const defaultValue = {data: 'Default'};
const useRemoteData = ({data}: any) => {
const [response, setResponse] = useState<any>();
const [error] = useState<any>();
const [isLoading] = useState(true);
useEffect(() => {
data ? setTimeout(() => setResponse(data), 500) : setResponse(defaultValue);
}, [data]);
return {response, error, isLoading};
};
export default useRemoteData;
and in my test file, Im trying to test that if the props change, the data will change too
import {renderHook} from '@testing-library/react-hooks';
import useRemoteData from './useRemoteData';
it('Init error false ', async () => {
const {result, waitFor, rerender} = renderHook(
({data}) => useRemoteData({data}),
{
initialProps: {data: 'first render'},
},
);
await waitFor(() => {
expect(result.current.response).toEqual('first render');
});
rerender({data: 'second render'});
await waitFor(() => {
expect(result.current.response).toEqual('second render');
});
});
Am I forgetting something in the test file?
Thanks!