Skip to content

편의점 회고 #16

@simoniful

Description

@simoniful

고민

  1. M1 환경에서 시뮬레이터 동작 불능 / Build Configuration
  2. RxTest, RxBlocking, Nimble, Stubber을 사용한 TDD
  3. MVVM의 실제 적용에 대한 고민

회고

  1. M1 환경에서 시뮬레이터 구성

    • arm 64 기반에서 네이버 맵, 구글 맵, 카카오 맵 세가지 서드파티는 시뮬레이터 구성에 있어서 신경쓸 부분

      1. 빌드 세팅에서 arm architecture 구성을 예외처리하고, 유효한 구성에 추가하면서 동작할 수 있도록 손보기
      2. 로제타로 구동되도록 Xcode 실행 설정 변경
      3. 13.0 기반 시뮬레이터에서 돌아가기에 버전 활용
    • Test 환경 구성에 있어서 Configuration 파일을 활용

      1. 번들 내 API KEY, APP KEY를 Configuration 파일로 저장하여 사용하였으나 pod 인스톨 과정에서 충돌 발생
      2. 해당 모듈을 불러오지 못하는 경우가 발생하면서 구성에 있어서 test와 app에 대한 개별 refer로 연결이 아닌 프로젝트 전체에 refer를 두면서 해당 출동 발생 방지
  2. 유닛 테스트
    method, Class 단위로 테스트 케이스를 작성하여 로직에 대한 검증 - 의도한 대로 작동하는지 확인, 원하는 값이 나오는지 확인
    예상치 못한 값이 들어왔을 경우 잘 작동하는지 확인 - ex. 메서드 파라미터로 Int를 받을 때 (Int 범위의 초과, nil. String 전달)

    • XCTest: 테스트 대상에 케이스 메서드 활용
      • setup() - 초기상태 사용자 정의, 목업데이터 부여
      • tearDown() - 테스트가 완료된 후에 정리
      • TestAssertion을 통한 값의 비교를 통해서 원하는 형태의 debug error message를 출력하도록 구성 가능
        image
    • Nimble: TestAssertion을 보다 직관적으로 명료하게 나타내게 하기 위한 + 비동기 처리를 용이하게 만드는 라이브러리
      image
    • Stubber: 더미 데이터를 주입하여 네트워크 상에서 적절한 리스폰스가 전달되었다고 가정하고 값을 네트워크 처럼 전달해주는 라이브러리
  3. MVVM과 의존성 주입
    의존성에 있어서 한번 더 생각을 해봐야 하는 부분, 주입되는 데이터에만 집중하고 해당 모델에 대한 인식은 View는 절대로 알 수 없어야 함.
    데이터의 전환과 변경 등 모든 비니지스적인 로직은 VM에서 수행해야하며 각 레이어에 대한 분리를 고민해봐야 한다.
    따라서 아키텍쳐 패턴에 대해서 고민해보고 어느 영역까지 각 객체가 인지하는 부분인지를 명확하게 해야할 듯

참고

👉🏻 카카오맵, 네이버맵 시뮬레이터 빌드
👉🏻 배포 환경별 빌드 설정
👉🏻 의존성 주입

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions