같이 프로젝트를 하기로 한 친구와 기획에 대해 이야기를 나누고 개발에 들어가기로 했다. 먼저 인증부분인 회원가입 페이지를 제일 먼저 만들어보았다.
지난 프로젝트들 동안 한번도 하지 못한 TDD를 꼭 해보기로 했기에 테스트코드를 먼저 작성하였다.
먼저 layout을 고려한 테스트코드와 interaction 부분으로 나누었다.
layout에서는 필요한 input과 button 등이 있는지 확인을 하였고, interaction 부분에서는 아무것도 작성하지 않고 버튼을 눌렀을때 에러메시지가 잘 나오는지 등 상황에 맞게 에러메시지 출력 여부를 확인하였다.
사실 TDD에 대해 배운것도 없고 혼자 공부를 한거라 이렇게 하는게 맞는지 모르겠지만 안하는것보다 낫지 않을까.
이전 프로젝트들을 할때는 onSubmit과 values만 props로 넘겨주고 onChagne,validate, error 등을 다시 리턴해주는 useForm이라는 커스텀 훅을 만들어서 회원가입, 로그인 페이지를 만들었었다. 하지만 지난번 원티드 온보딩 챌린지를 하며 다른 참가자의 코드를 보더중 react-hook-form이라는걸 발견하였고 이걸 사용해보기로 했다. 사용 하는 이유는 아래와 같았다.
위와 같은 이유로 react-hook-form을 선택하였고 사용해보았다.
아래는 내가 작성한 코드의 일부분이다. taliwind와 styledcomponent를 함께 사용하고 있다.
직접 사용해보니 정말 편했고 이걸 왜 이제 알았나 싶다.. 앞으로 왠만하면 react-hook-form 을 사용할것 같다.
컴포넌트를 나누는 기준은 언제나 좀 어려운것 같다. 나같은 경우에는 재사용 가능성 여부를 가장 중요하게 생각하고 나누었다. Button처럼 여러 페이지에서 공통적으로 사용될것같은 컴포넌트는 components 폴더 안에 위치하도록 하였고, 성격이 비슷한 특정 페이지(회원가입, 로그인)에서만 재사용 할 컴포넌트들은 components/auth 이런식으로 폴더를 하나더 만들어주어 관리를 하기로했다.
tsconfig.json에서 절대경로를 설정해주었지만 jest는 설정을 해주지 않았기 때문에 test 환경에서 @component를 인식하지 못한 에러였다.
jest.config.js에 moduleNameMapper을 추가 해주며 해결