Copy export default function FollowersList() {
const [followers, setFollowers] = useState([]);
useEffect(() => {
fetchFollowers();
}, []);
const fetchFollowers = async () => {
const { data } = await axios.get('https://randomuser.me/api/?results=5');
setFollowers(data.results);
};
...
Copy describe('FollowersList', () => {
it('should render FollowerList Element', async () => {
render(<MockFollowerList />);
const followerDivElement = screen.getByTestId('follower-item-0');
expect(followerDivElement).toBeInTheDocument();
});
});
안타깝게도 에러가 발생한다...
그렇다면 왜 에러가 발생할까? 이유는 간단하다. 컴포넌트가 렌더링 되고 난 이후에 useEffect
를 실행해서 비동기로 데이터를 가져오고, 세팅해야하는데 우리의 테스트는 이런 비동기를 기다리기 전에 바로 테스트를 해버리는것. 따라서 발견하지 못하고 에러가 발생한다. 이런 경우 사용할 수 있는 명령어를 이전에 학습하긴 했다. 바로 find
를 사용하는 것.
아래는 수정된 코드다.
Copy describe('FollowersList', () => {
it('should render FollowerList Element', async () => {
render(<MockFollowerList />);
const followerDivElement = await screen.findByTestId('follower-item-0');
expect(followerDivElement).toBeInTheDocument();
});
});