프론트엔드 생존코스 3기 7주차 회고

2023-05-26

프론트엔드 생존코스 3기 7주차 회고

라우터를 이용하여 페이지를 분리해보자

7주차 데브노트

1. 라우트를 이용한 페이지 분리 후 컴포넌트 유닛테스트에서 겪은 문제점

이번주에는 이전 차수의 내용 + 라우터를 이용해서 페이지를 분리하는 작업을 하였다. 라우터를 이용해서 작업하는 부분은 크게 어렵지는 않았으나 유닛테스트 하는 부분에서 쉽지 않았다.

먼저 라우터를 테스트 하기 위해서는 MemoryRouter(브라우저의 URL 및 기록 API를 활용하는 BrowserRouter 또는 HashRouter와 달리 MemoryRouter는 실제 브라우저 URL에 영향을 주지 않고 라우팅 상태를 메모리에 저장)를 사용해서 테스트를 진행해줘야 한다는 부분을 알게 되었다.

routes.test.tsx

... function renderRouter(path:string) { const router = createMemoryRouter(routes, { initialEntries: [path] }); render(<RouterProvider router={router} />); } ...

또 알게 된 부분은 react-router-domuseNavigate, useSearchParams hook을 호출하는 컴포넌트의 유닛테스트에서 에러가 발생하는 현상이 있었다. 해당 문제점은 두개의 hook을 테스트안에서 mocking을 해줘야하는데 그 부분을 해주지 않았기 때문에 나타나는 문제였다.

jest.mock('react-router-dom', () => ({ ...jest.requireActual('react-router-dom') as object, useNavigate: jest.fn(), useSearchParams: () => [new URLSearchParams({ orderId: '12345678910' })], })); describe('OrderContainer', () => { ... }

해당 hook의 mocking 부분은 위와 같이 테스트 제일 상단에 해놓으면 hook을 호출하지 않았다는 에러가 사라지게 된다. 테스트 경험이 많이 없다보니깐 알지 못하는 에러가 자주 발생하지만 그래도 구글링을 통해서 해결이 가능하니 큰 문제는 없었다.

2. 동력이 좀 떨어진 한주

이번주 과제도 크게 어렵지 않았지만 과제를 한 과정을 생각해보면 금방 끝낼 수 있던 문제도 조금 하다가 유튜브를 보고 했던 모습이 생각난다. 생각보다 집중을 많이 못한 한주였다는 생각이 들었다. 회사에서 하는 일도 현재 서비스와 관련되지 않은 일을 할 수 있다는 부분도 영향이 있었던 거 같은데 그럼에도 과제를 포기하지 않고 끝냈다는 부분에 나한테 칭찬을 해주고 싶다.

이번주 같은 날도 있어야지 항상 같은 자세로 유지하기란 쉽지 않다. 이번 연휴를 잘 휴식하고 다음주에 다시 집중해서 공부랑 작업을 해봐야겠다.

포기만 하지말고 느리더라도 한걸음씩 꾸준히 걸어나가보자!

반복되는 구조의 타입을 줄이기 위한 노력(API Response편)

반복되는 구조의 타입을 줄이기 위한 노력(API Response편)

Utility Types를 활용해서 제거해보자

프론트엔드 생존코스 3기 8주차 회고

프론트엔드 생존코스 3기 8주차 회고

CSS in JS로 디자인 적용하기