[레벨1 - 미션2] 2단계 로또 피드백

Nine·2022년 3월 15일
1

이번 피드백에서는 테스트 관련해서 많은 말씀을 주셨어요.

테스트의 필요성을 느끼긴 했지만 E2E 테스트에 비해 단위 테스트는 어렵게 느껴지더라구요.

그럼 이번 피드백을 간단하게 정리해보겠습니다!


도메인 분리가 뭔가요?

일단 사용자 시나리오를 세세하게 구분하고 그 안에서 돌아가야하는 로직에 대해 생각해봅시다.

구현 기능 사항을 써보고 나서 도메인과 UI를 나눠보는 것이 가장 쉬워요.

View, UI에 대한 부분은 굉장히 자주 바뀔 수 있는 부분이예요. 따라서, 이 부분을 분리하는 것은 기본 중의 기본이예요.


랜덤이 포한된 테스트는 왜 어려운 건가요?

예측할 수가 없잖아요😢😢

  • 그래도 방법은 있죠!

랜덤 로직은 외부에서 처리하고 Lotto는 그냥 인자로 넘어온 숫자 자체만 신경쓰는 방법이 있어요. (생성자로 로또 번호들을 받아버리면 Lotto Class는 랜덤의 존재 자체를 모르겠죠!)

로직 내부에 랜덤 로직이 들어가버리면 정말 랜덤값을 예측할 수 없기 때문에 외부에서 생성자로 받아와버리는 방법도 있어요.

결론! Lotto Class에서 테스트하기 어려운 Random과의 의존 관계를 제거해봅시다.


TDD를 잘하는 방법?

TDD를 잘하려면 테스트하기 어려운 코드와 테스트하기 쉬운 코드의 의존 관계 분리한 후 테스트하기 쉬운 코드만 TDD로 구현할 수 있어야 하는데요.

아까 위에서 이야기한 Lotto Class와 Random 로직이 그 예시가 될 수 있겠네요!

But, 이 부분이 생각보다 쉽지 않으니 꾸준한 연습이 필요하다고 합니다.

레벨1에서 모든 토끼를 잡으려고 하지 말아요. 그건 욕심!🐢🐢

profile
함께 웃어야 행복한 개발자 장호영입니다😃

0개의 댓글