이번 피드백에서는 테스트
관련해서 많은 말씀을 주셨어요.
테스트의 필요성을 느끼긴 했지만 E2E 테스트에 비해 단위 테스트는 어렵게 느껴지더라구요.
그럼 이번 피드백을 간단하게 정리해보겠습니다!
일단 사용자 시나리오를 세세하게 구분하고 그 안에서 돌아가야하는 로직에 대해 생각해봅시다.
구현 기능 사항을 써보고 나서 도메인과 UI를 나눠보는 것이 가장 쉬워요.
View, UI에 대한 부분은 굉장히 자주 바뀔 수 있는 부분이예요. 따라서, 이 부분을 분리하는 것은 기본 중의 기본이예요.
예측할 수가 없잖아요😢😢
랜덤 로직은 외부에서 처리하고 Lotto는 그냥 인자로 넘어온 숫자 자체만 신경쓰는 방법이 있어요. (생성자로 로또 번호들을 받아버리면 Lotto Class는 랜덤의 존재 자체를 모르겠죠!)
로직 내부에 랜덤 로직
이 들어가버리면 정말 랜덤값을 예측할 수 없기
때문에 외부에서 생성자로 받아와버리는 방법도 있어요.
결론! Lotto Class에서 테스트하기 어려운 Random과의 의존 관계를 제거해봅시다.
TDD를 잘하려면 테스트하기 어려운 코드와 테스트하기 쉬운 코드의
의존 관계 분리
한 후 테스트하기 쉬운 코드만 TDD로 구현할 수 있어야 하는데요.
아까 위에서 이야기한 Lotto Class와 Random 로직이 그 예시가 될 수 있겠네요!
But, 이 부분이 생각보다 쉽지 않으니 꾸준한 연습이 필요하다고 합니다.
레벨1에서 모든 토끼를 잡으려고 하지 말아요. 그건 욕심!🐢🐢