
뱅크샐러드 iOS팀이 숨쉬듯이 테스트코드 짜는 방식 3편 - 스펙별 단위 테스트
두줄요약
iOS 앱의 스펙별 단위 테스트를 쉽게 만드는 TestUtility와 RxTestCase 구조를 소개했습니다. 로깅·화면 전환부터 TDD를 단계적으로 확장하는 방식을 제안합니다.
구조와 흐름
- TestUtility 모듈로 given-when-then 형식의 단위 테스트 기반 제공
- RxTestCase로 TestScheduler, 이벤트 입력 생성, 결과 이벤트 관측 보일러플레이트 축소
- EventLoggingTestCase와 PresentableLogicTestCase로 로깅·화면 전환 스펙별 테스트 형식 표준화
선택 이유
- 입력과 출력의 명확한 분리로 Rx 비동기 로직 테스트 가독성 향상
- 반복적인 테스트 코드를 서브클래스로 추상화해 짧고 일관된 테스트 작성 지원
- 육안 확인이 어려운 로깅과 여러 폼 조건을 포괄하는 내비게이션 로직의 우선 검증
주의할 점
- Presentable enum의 직접 비교 제약을 CustomDebugStringConvertible 기반 문자열 비교로 우회
- 모든 영역의 즉각적인 TDD 적용보다 테스트하기 쉬운 스펙부터 단계적 확장
적용해볼 점
- 로깅 로직을 TDD 적용의 시작 규칙으로 지정
- 테스트 코드가 신뢰 가능한 스펙 문서가 되도록 중요한 요구사항과 누락하기 쉬운 요구사항 우선 표현
