describe: 같은 맥락의 테스트들을 그룹화.it: 개별 테스트를 수행. test 메서드와 동일.render: 테스트를 위해 특정 컴포넌트를 jsdom에 렌더링.쿼리는 엘리먼트를 찾기 위한 메소드이다.
쿼리 타입
-get(All)By: 동기적. 타겟을 찾지 못할 시 에러.
-query(All)By: 동기적. 타겟을 찾지 못할 시 null.
-find(All)By: 비동기적. Promise를 반환하고 타겟을 찾지 못할 시 reject 된다.
타겟 유형: getByRole, getByLabelText, getByPlaceholderText, getByText...
얻어온 타겟을 이용해 이벤트를 발동시킨다.
fireEvent(node: HTMLElement, event: Event): 문제는 브라우저가 일반적으로 하나의 인터랙션에 대해 하나 이상의 이벤트를 트리거 한다는 것.userEvent: 권장. 내부적으로 fireEvent를 사용하며 실제 유저 행동과 흡사한 기능 제공. 구체적인 이벤트 대신 유저 인터렉션을 묘사하게 한다. 브라우저에서 유저 인터렉션이 하는 것처럼 DOM을 조작한다.expect: 유효성 검증.axios, fetch 등을 사용할 때 가독성을 위해 find 메서드를 사용.
api 응답 결과에 따라 컴포넌트가 어떻게 반응하는지에 초점을 둘 것!참고