How to test async useEffect
with react-testing-libs
?
i have:
// in other file
const getData = () => {
return new Promsise(resolve => setTimeout(() => resolve([1, 2, 3]), 5000));
};
const MyComponent = () => {
const [data, setData] = useState([]);
useEffect(() => {
const fetchData = async () => {
const data = await getData();
setData(data);
};
fetchData();
}, []);
return <div>{data.map(item => <span>{item}</span>)}</div>
};
How test this component?
my test now:
it('MyComponent test', async () => {
await act( async () => {
render(<MyComponent/>, container);
});
expect(container.innerHTML).toMatchSnapshot();
});
But act, render doesn't wait for useEffect().
Why ?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…