Skip to content

민섭 trouble‐shooting‐3

LikeFireAndSky edited this page Nov 25, 2023 · 1 revision

JEST useQuery 상태에서 받아오기

image

가장 기본적으로 사용될 useQuery test 입니다!! 간단하게 로딩중일 때 로딩중이라고 text가 나오는 지 테스트했습니다.

image 먼저 커스텀 훅을 가져와서 test를 해보려고 할 때 입니다!!

저는 useGetAllWishs라는 커스텀 훅을 만들어서 사용하고 있습니다.

image

간단하게 설명하자면 사용자가 wish list에 넣은 상품들 가져오는 query 입니다!!

커스텀 훅 조건에 맞춰서 테스팅하기!!

useQuery를 사용하는 이유는 아마 에러헨들링과 로딩 상태 구현이 쉽기 때문이 이유에 하나 일 것 같습니다. 따라서 isLoading이 true 일 때 테스트 하는 함수를 만들어보았습니다.

커스텀 훅 모킹하기

image

먼저 사용할 customHook을 jest의 모킹 함수로 불러와주었습니다. type은 에러가 너무 나서 any를 넣었는데 이거 같이 찾아봐도 좋을 것 같습니다... ㅠㅠㅜ

image 이후 함수를 모킹 할 쿼리 주소를 찾아주고 연결합니다.

조건에 따른 커스텀 훅 test하기

image

mockImplementation 메서드는

image

다음과 같이 모킹으로 실행되어야 할 함수를 사용할 수 있게 합니다. 해당 모킹 객체는 모든 호출과 그 함수에서 나오는 인스턴스를 모두 기록합니다!!

따라서 해당 customHook에서 return값으로 준, 그리고 사용할 컴포넌트에서 객체구조분해 할당으로 꺼낸 인스턴스들의 값을 변경할 수 있습니다.

즉 isLoading의 상태를 임의로 설정할 수 있습니다!!

image

renderHook은 커스텀 훅을 사용할 때 필요한 메서드입니다. 기본적으로 testing library에 깔려 있습니다. 해당 메서드를 통해서 훅의 결과를 가져올 수 있는데, 이를 통해서 isLoading에 초기값을 true로 했다면 result.current.isLoading은 true가 됩니다.

이를 통해 테스트를 진행할 수 있습니다.

초기 mockImplementation에서 파라미터값 isLoading을 true로 했기 때문에

image

화면에는 로딩중이라는 text가 떠야하고

이를 image

통해 expect 값으로 테스트합니다!!