test 코드 작성시 질문
vite를 사용하고 있으며 현재 촐더 구조입니다.

현재 jest.setup.ts 파일내용입니다. (챗 gpt에게 물어본 결과 setupTest.ts로 바꿔야한다는 답변을 받았지만 꼭 바꿔야하는지 잘모르겠습니다.)
import "@testing-library/jest-dom"
import { server } from "./src/mocks/server"
beforeAll(() => server.listen())
afterEach(() => server.resetHandlers())
afterAll(() => server.close())

msw를 사용 하기위해 필요한 설정을 해놓았습니다.
다음은 테스팅을 위한 컴포넌트 입니다.
import axios from "axios"
import React, { useEffect, useState } from "react"
const Direction: React.FC = () => {
const [data, setData] = useState<any>({})
const [isLoading, setIsLoading] = useState(true)
useEffect(() => {
void (async () =>
setData(await (await axios("https://jsonplaceholder.typicode.com/todos/1")).data))()
setIsLoading(false)
}, [])
return (
<>
{isLoading ? (
<div>loading...</div>
) : (
<ul>
<li>{data.id} / </li>
<li>{data.title} /</li>
<li>{data.userId} /</li>
</ul>
)}
</>
)
}
export default Direction
보시는 것처럼 데이터를 불러와서 화면에 표시하는 컴포넌트 입니다.
다음은 테스트 케이스 입니다.
import { render, screen } from "@testing-library/react"
import Direction from "."
test("Direction 컴포넌트가 정상적으로 렌더링되는지 테스트", async () => {
render(<Direction />)
const result = await screen.findAllByRole("listitem")
expect(result).toHaveLength(3)
})해당 코드를보시면 간단해서 에러없이 깔끔하게 성공합니다.
하지만 프로젝트에서 swr을 사용하기로 했는데 여기서 문제가 발생합니다.
import React from "react"
import useSWR from "swr"
const Direction: React.FC = () => {
const { isLoading, data } = useSWR("https://jsonplaceholder.typicode.com/todos/1")
return (
<>
{isLoading ? (
<div>loading...</div>
) : (
<ul>
<li>{data.id} / </li>
<li>{data.title} /</li>
<li>{data.userId} /</li>
</ul>
)}
</>
)
}
export default Direction
컴포넌트를 swr을 사용하는 방식으로 바꾸고 테스트를 실행해보면 findAllByRole에서 listitem을 찾을수 없다는 에러가 발생합니다.
swr의 특성인거같긴한데 도무지 해결방안이 떠오르지 않습니다.
react-query나 swr같은 캐싱라이브러리를 사용하면서 msw를 사용하여 테스트를 하고 싶은데 따로 설정해야하는 것들이나 권장되는 코드 작성 방식이 따로 있나요?
그것이아니라면 어떤부분을 수정해야 제대로 작동할까요?
답변 1
0
안녕하세요 민석님 혹시 해당 코드 깃헙으로 공유해주실 수 있을까요?
0
해당코드 링크입니다. https://github.com/skweedCont/pre-project
master브랜치가 swr로 인해 테스트 케이스에서 에러가 발생하는 코드
그리고 copy브랜치가 swr로 변경전 테스트 케이스를 통과하는 코드입니다.
테스트 케이스에서 에러가 발생하는 파일의 경로는 src/pages/direction안에 있습니다.
1
test("Direction 컴포넌트가 정상적으로 렌더링되는지 테스트", async () => {
render(
<SWRConfig
value={{
fetcher: async (url) => await (await axios(url)).data
}}
>
<Direction />
</SWRConfig>
)
const result = await screen.findAllByRole("listitem")
expect(result).toHaveLength(3)
})
테스트 코드에서도 <SWGConfig> 컴포넌트로 감싸주셔야 Direction 컴포넌트 내부에서 useSWR을 사용할 수 있습니다.
power shell에서는 claude가 정상 실행되는데, cursor terminal에서는 실행 에러 발생하네요.
0
7
1
live server, korean도 확장팩 검색이 되지 않습니다.
0
9
0
CLAUDE.local.md
0
10
1
55강 관련 질문(커밋이 완료되지 않을 때)
0
9
1
클로드 코드를 쓸때 Cursor IDE의 이점?
0
15
1
오류사항
0
27
3
md 파일을 위한 폴더 관리의 기준이 궁금합니다.
0
16
2
혹시 결제연동
0
23
1
claude code가 작업중일때 ctrl t 눌러서 진행상황 확인 불가
0
23
1
메타프롬프트 관련
0
25
2
side bar positon. 어떻게 해도 안돼요..;
0
20
1
모델 고정방법 문의
0
21
2
98강. 1인 사이드프로젝트 시 질문
0
31
2
state 객체로 묶기
0
18
0
강의화면과 Cursor프로그램 화면이 달라서요..
0
25
2
커서 설치했는데 이해 안되네요
0
32
2
강의 마지막이 잘려있는것 같습니다
0
50
2
전부 입력된 코드들만 있는건가요? 따라치면서 하고싶은데...
1
273
1
코드 샌드박스 안되는거같습니다
1
274
1
공유소스 실행시 에러 문의 드립니다~
1
415
1
[섹션 3. Form 컴포넌트로 배우는 실전 기술] 강좌의 소스를 부탁드립니다.
0
292
1
마지막 onSubmit 에러체크 문제
1
392
1
코드샌드박스 주소
1
490
1
TDD - Green, Red, Refactor
1
659
2





