Skip to content

[행성 로또] 서산 미션 제출합니다.#31

Open
dannysir wants to merge 26 commits intowoowacourse-precourse:mainfrom
dannysir:dannysir
Open

[행성 로또] 서산 미션 제출합니다.#31
dannysir wants to merge 26 commits intowoowacourse-precourse:mainfrom
dannysir:dannysir

Conversation

@dannysir
Copy link

@dannysir dannysir commented Jan 10, 2026

개인 도전 목표

현재 상황

요구 사항을 완료한 이후 몇가지 고려할 점이 생겼습니다.

고려되는 부분

  • 만약 로또 금액이 500원이 아니라 1000원으로 바뀌어도 괜찮은가
  • 사용자가 로또 금액 단위의 금액을 입력하지 않으면 예외처리가 과연 맞는가
  • 로또 숫자가 0~100까지 가능하게 바뀔 수 있는가
  • 로또가 5개의 숫자가 아니라 6개의 숫자를 뽑아도 괜찮은가

여기에 더해서 현재 코드가 그 동안 지켜왔던 규칙을 지키고 있는지도 확인 해야 한다.

  • 함수의 길이가 15줄을 넘어가는가
  • 들여쓰기 depth가 3을 넘어가는가
  • 각각의 모듈의 테스트 코드를 잘 작성했는가
  • 테스트 코드에서 잡지 못하는 엣지 케이스가 있는가

도전 목표

목표 1

로또 조건이 변경되도 실행될 대응이 가능한 코드를 만들자

constants.js의 수정을 통해 변경에 용이한 구조를 만들자

  • 로또 숫자 범위 변경 가능
  • 로또 가격 변경 가능
  • 사용자가 로또 범위 외의 돈을 입력했을 때 정상 작동 로직 추가

목표 2

그 동안 지켜왔던 JavaScript 코드 규칙을 지켰는지 확인하자

  • 함수 길이
  • if/else 지양
  • 들여쓰기 depth 3 이하

목표 3

  • 각각의 비즈니스 로직에 해당하는 테스트 코드를 잘 작성했는지 확인
  • 테스트 하지 못한 엣지 케이스 확인

완료 항목

기본 구현 사항

  • 돈을 입력 받아 로또를 구매한다.
  • 구매한 로또를 보여준다.
  • 당첨 번호와 보너스 번호를 입력 받는다.
  • 당첨 결과를 출력한다.
  • 예외 발생시 [ERROR]를 포함한 메시지와 함께 해당 부분부터 다시 입력 받는다.

도전 사항

  • Random 모듈이 문제가 생길 경우 예외 처리 진행
  • 로또 관련 상수값 분리를 통해 로또 조건 변경에 대응하도록 수정
  • 로또 단위가 아닌 금액을 입력해도 가능하도록 수정
  • 부족한 테스트 코드 추가
    • App.test.js - 정상 입력 엔드 투 엔드 테스트 추가
    • User.test.js - 부족한 금액의 경우 테스트 추가
    • Lotto.test.js - Random모듈이 문제가 생겼을 경우를 위한 테스트 추가
  • if/else 문 제거

README.md에 요구 사항 정리
View 코드를 분석하여 추가 요구 사항 정리
입력 값을 받아서 모델에 전달하는 기능 추가
Lotto.js 객체에서 로또 숫자를 생성하는지 테스트
Lotto.js 객체에서 랜덤 숫자를 자동으로 정렬해서 저장하는지 테스트
Lotto.js 객체에서 랜덤 숫자를 자동으로 정렬해서 저장하는지 테스트
mockRandom과 같은 테스트 유틸 함수를 재사용하기 위해 분리
정상 입력 1500원 입력시 3개의 로또 구매
비정상 입력 문자열 입력시 에러 발생
비정상 입력 500단위가 아닌 숫자 입력시 에러 발생
로또를 가지고 있는 User객체 구현
로또를 구매하고 반환하는 기능을 갖고 있음
로또 길이 및 로또 숫자 제한을 상수 값으로 활용하여 변동에 용이하도록 수정
중복된 숫자, 범위 밖 숫자, 문자열 입력시 예외 처리
당첨 번호 입력시 예외처리 로직 추가
정상 입력시 get 메서드 동작 테스트 추가
당첨 번호와 보너스 번호를 get하는 로직 추가
Calculator가 번호를 입력 받으면 등수를 계산하는 테스트 작성
당첨 번호, 보너스 번호, 로또 번호를 입력 받으면 결과를 계산하여 Map 객체를 전달하는 로직 구현
input으로 돈을 입력 받고 로또를 구매 후 출력
보너스 번호를 입력 받고 Game에 등록
Calculator를 통해 계산 결과를 OutputView에 전달
기존 메서드의 경우 강제 형변환을 통해 '100m' 과 같은 경우를 통과 시키기 때문에 변경이 필요
그러나 기존 메서드 수정이 불가하기 때문에 메서드를 새롭게 추가함
README.md에 도전 목표 수립
로또 단위가 아닌 금액을 입력해도 예외처리 하지 않도록 수정
App.js 테스트를 추가하여 end to end 테스트를 진행
누락된 엣지 케이스 음수 금액 입력시 예외 처리 테스트 코드 및 로직 추가
constants에 에러 관련 메시지 추가
직관적이지 못한 메서드명을 직관적이게 수정 getWinBonusNum -> getWinNumInfo
Random 모듈에 문제가 있을 경우를 위한 테스트 코드 작성
Random 모듈에 문제가 있을 경우 Lotto 객체에서 직접 예외처리를 하도록 구현
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

Comments