내가 해냈다!
사실 누군가에겐 정말 별거 아닐 수 있는 문제인데, 거의 3~4시간 정도 매달렸음에도 불구하고 해결하지 못해 도움을 요청하려 쓴 글도 지운 다음, 결국 해냈을 때의 쾌감은 엄청난 거 같다. 그 일이 뭐였냐면...
한창 과제를 진행하다 ListContainer.test.jsx에서 다음과 같은 에러를 만났다.
이전에 있었던 과오를 되풀이 하지 않는다. 에러 문구부터 천천히 읽어보자. TypeError: Cannot read properties of undefined (reading 'map') : (내가 스스로 한 번역) undefined의 properties를 읽어올 수 없다는 것이다. 나는 restaurantCatalog가 배열이길 원한 건데 jest는 배열을 받지 못했다는 것이다. 내가 작성한 코드는 다음과 같다.
사실, 눈치 빠른 사람들은 벌써 알아챘을 수도 있는데, 내가 이렇게 작성한 이유는 과거 다음과 같이 코드를 작성한 적이 있기 때문이다.
과거에 됐었던 코드를 똑같이 했음에도 불구하고 안됐다? '내가 잘못한 게 있겠지'라는 생각으로 똑같이 작성해도 전자는 되고 후자는 안 됐다. 당연하다, 전자가 안 됐던 이유는 생각 없이 똑같이 작성한 코드 때문에 안 됐던 거다. 전자의 ListContainer.test.jsx에서 useSelector로 테스트용 데이터를 이용하여 상태를 받아올 때 restaurants'만' 작성하면 restaurants: restaurants(객체의 단축 프로퍼티)가 된다. 근데, initialState엔 restaurants라는 프로퍼티가 존재하지 않는다. 나는 과거에 tasks라는 프로퍼티가 initialState에 있었고 테스트용 데이터의 이름도 tasks였기 때문에 성공한 코드를 (initialState에 존재하는 프로퍼티): (테스트용 데이터)처럼 해줘야 하는 것을 왜 성공했는지 인지하지 못하고 있던 것이다. 따라서 다음과 같이 작성하면 된다!
initialState에 존재하는 프로퍼티인 (restaurantCatalog 배열): (테스트용 데이터인 restaurants)와 같이 selector로 가져와 테스트를 실시하면 정상적으로 동작한다! 사실, 지금부턴 오프 더 레코드인데 3~4시간 고민하다 다음과 같은 텍스트로 결국 질문글을 작성했었다.
오늘자 1d8b614 에서
기능은 정상적으로 동작하는데(console창에 나오는 에러도 없었습니다), ListContainer.test.jsx 유닛 테스트를 실시하면 TypeError: Cannot read properties of undefined (reading 'map') 즉, restaurantCatalog의 프로퍼티를 읽어올 수 없다고 하는데요. 테스트는 틀렸다고 하는데 기능은 동작해서 4주차 첫 번째 과제의 ListContainer.test.jsx를 확인해봐도 구성이 똑같아서 왜 프로퍼티를 읽을 수 없다고 하는지 해결책을 알고 싶습니다.
점심 먹기 전에 다음과 같은 질문글을 올렸고, 점심을 먹고 돌아오면서 질문에 대한 생각을 했는데, 이런 비슷한 문제로 질문한 적이 있어서 또 반복하는 거 같아 내가 발전을 못하나, 프로그래밍하면 안 되는 사람인가?라는 생각도 들었고 내딴에는 해결해보려 노력했는데 노력조차 안한 사람처럼 보이고 싶지 않아서 질문을 지우고 다시 또 시도해봤다. 결국 해낼 수 있어서 정말 다행이란 생각도 들고 쾌감은 짜릿하며 전에 말했던 에러를 눈 앞에 두고 도망치는 행동을 되풀이하지 않아 내 자신과의 싸움을 이긴 거 같아 너무 행복했다. 또한, 에러를 해결하면서 useSelector의 작성 방식도 정확히 알 수 있었던 점이 좋았다. 계속 노력하자!
'TIL' 카테고리의 다른 글
TIL - 20220529 (0) | 2022.05.29 |
---|---|
TIL - 20220528 (0) | 2022.05.28 |
TIL - 20220526 (0) | 2022.05.26 |
TIL - 20220525 (0) | 2022.05.25 |
TIL - 20220524 (0) | 2022.05.24 |