오늘은 코드숨 과제를 진행하며 생겼던 헷갈리는 부분들을 윤석님과 함께 시원하게 해소하는 시간을 가졌다.
먼저, 테스트 대상을 어떻게 정하느냐에 대한 부분이다. 예를 들어, reducer를 테스트한다고 가정하자. BDD를 사용한다면 테스트 대상은 당연히 reducer가 될 것이다. 그다음 reducer로 처리할 액션들을 테스트 대상으로 규정해야 할지 아니면 크게 reducer만 테스트 대상으로 보고 액션들은 reducer의 행동으로 볼 것인지 이 부분이 헷갈리는 점이었는데, 내가 내린 결론은 보는 사람의 관점에 따라 달라지며, 나는 전자를 선택했다. 전자를 선택한 이유는 테스트를 진행할 액션이 한두 가지가 아닌 여러 가지기 때문에 전체 reducer의 행동으로 보며 작성한 테스트 코드보다 액션들을 테스트 대상으로 규정하고 그 테스트 대상들의 행동을 테스트 코드로 작성한 것이 더 보기도 좋고 이해하기도 쉽기 때문이다. 그래서 처음에 작성할 때는 액션들을 테스트 대상으로 정했다가 전체 reducer만 테스트 대상으로 바라보며 바꿨었고 윤석님과 대화 끝에 결국 액션들을 테스트 대상으로 정하는 걸로 결정했다. 3주차 테스트를 처음 배운 이후로 테스트 대상을 어떻게 정할 지에 대해 많은 고민과 시간을 쏟은 것 같은데 내가 내린 결론은 테스트를 진행하는 파일에 대한 사용법을 작성한다고 생각하면서 나 자신이 스스로 이건 테스트 대상으로 또 정해야 할 것 같다고 느껴진다면 테스트 대상으로 정하는 것이 정하지 않는 것보다 더 좋은 테스트 코드를 작성할 수 있다고 생각한다. 이 감각은 테스트 코드를 많이 작성하다 보면 이 경계를 확실히 더 잘 알 수 있을 것 같다는 확신을 갖게 됐다.
다음으로, Commit 메시지 쓰는 법에 대한 부분이다. Commit log를 제대로 작성하겠다는 다짐을 시작한 화요일부터 계속 더 의도를 드러내라는 리뷰를 해주셨다. 나는 Commit 제대로 작성하는 법을 참고하며 제대로 작성했다고 생각하는데 매번 돌아오는 답변은 의도를 드러내라라고 말씀하셔서 내가 뭘 놓치고 있는지 쉽게 떠올리지 못했는데 오늘 제목만 봐도 왜? 이런 커밋을 했는지 알아야 한다는 말씀을 해주셨다. 부끄럽지만 내가 작성했던 Commit을 보자.
내가 한 Commit의 제목은 TEST: api.test.js다. 그래, 열 번 양보해서 제목을 보면 api.test.js라는 테스트 코드를 추가했다는 것은 알겠다. 근데 왜 api.test.js를 작성했는가? 에 대한 답은 없다. 처음 윤석님이 해주신 리뷰를 잘못 이해해서 API 호출을 제대로 하는지 테스트하라라는 텍스트가 내용에 존재하는데 이 내용이 제목에 올라가야 하는 것이다. 또한, 커밋은 잘게 나누어서 진행해야 한다. API 호출을 제대로 하는지 테스트하라를 레스토랑 목록 조회 API를 테스트하라는 Commit, Regions 목록 조회 API를 테스트하라는 Commit으로 더 잘게 나누어야 한다. 아직 이 부분에 대해서는 더 리뷰를 받으며 다듬어야겠지만 그래도 방향과 더 나은 작성법이 무엇인지 확실히 이해할 수 있어서 큰 수확을 얻은 하루였다!
'TIL' 카테고리의 다른 글
TIL - 20220605 (0) | 2022.06.05 |
---|---|
TIL - 20220604 (0) | 2022.06.04 |
TIL - 20220602 (0) | 2022.06.02 |
TIL - 20220601 (0) | 2022.06.01 |
TIL - 20220531 (0) | 2022.05.31 |