🧐 유닛 테스트, 왜 진행하기로 했을까? 프로젝트에서 제대로 만들었다고 생각했지만 예상치 못하게 또다른 오류를 발견한 부분이 있었다. 이전에도 한번 오류를 해결했다고 생각했는데, 또 발견하게 되다니.. 상황에 따라 예상치 못한 오류가 있을 수 있는 부분이라고 생각했고, 이 참에 아예 테스트를 작성한 뒤 명확하게 로직 자체를 검사해가면서 확실하게 의도한 대로 동작하도록 만들어보기로 결심했다. 💀 문제였던 부분, 예약기간 선택하기 기능 스테이 메모리는 숙박 장소를 골라 예약할 수 있는 숙박플랫폼 프로젝트였다. 원하는 숙박장소를 선택해 상세페이지에서 예약 기간을 선택할 수 있다. > 구현 시 다음과 같은 조건을 만족해야 했다. 예약 기간 선택 시 예약 불가 날짜를 포함할 수 없음 사용한 라이브러리는 에어비앤비에서 만든 react-dates인데, 이 라이브러리를 통해 비활성화한 날짜는 클릭할 수 없다. 하지만 아래와 같이 해당 날짜를 포함해 예약 기간을
프로젝트에서 중요한 부분인 예약 기간 선택 기능에 오류가 있는 것을 발견했다. 의도한 대로 동작하지 않는 부분이 있었는데,이것을 하나하나 브라우저에서 실행해 테스트하는 대신 테스트 코드를 작성해두고 사용해보기로 했다. > TDD를 제대로 진행해보고 싶었다. 그냥 새로운 프로젝트부터 TDD를 하기에는 시간도 부족했지만 기능 명세가 부족해 오히려 유연하게 대처하지 못할 위험이 있었다. 모든 기능이 구현 된 이후 리팩토링 단계에서 진행하면 테스트 범위와 내용이 명확해질 뿐더러 에러 해결에도 큰 도움을 받을 수 있을 것이라고 생각했다. 테스트 내용 테스트할 내용은 상세 페이지의 날짜 예약 컴포넌트의 함수들이다. 날짜를 선택하세요 버튼 클릭 시 달력 창 열기 달력 창이 렌더링 된 후 예약 불가능한 날짜 받아오기 예약 불가능한 날짜로 달력에 선택 불가하도록 표시 (disableDates()) 체크인 날짜를 선택하면, checkFirstUnavailableDate