heoblitz
Blitz.dev
heoblitz
전체 방문자
오늘
어제
  • 분류 전체보기 (36)
    • iOS Dev (22)
      • iOS (3)
      • Swift (7)
      • Testing (3)
      • Reactive (2)
      • Architecture (2)
      • Layout (1)
    • PS (4)
      • Algorithm (4)
    • Other (9)
      • Springboot (3)
      • Linux (1)
      • Python (1)
      • Java (1)
      • React (1)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • gradle
  • xcode
  • Git
  • ARC
  • SWIFT
  • swift 윈도우
  • intellij
  • XCTest
  • Test Code
  • RxSwift
  • github
  • URLSession
  • codingtest
  • springboot
  • java
  • chrome-extension
  • Code Review
  • IOS
  • swift 5
  • 오픈소스

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
heoblitz

Blitz.dev

iOS 에서 Void Observable 테스트 코드 작성하기
iOS Dev/Testing

iOS 에서 Void Observable 테스트 코드 작성하기

2021. 7. 13. 09:55

 

RxSwift 에서 다음 이벤트로 값을 전달할 필요가 없는 경우에는 Void Observable 를 사용합니다.

 

 

viewModel 에서 화면 전환에 사용 중인 Relay

 

 

그리고 테스트 코드를 작성하기 위해서는 RxTest 에 있는 TestScheduler 를 이용하여

가상 시간의 이벤트들을 방출하는 옵저버블을 만들고, XCTAssertEqual 을 통해 events 를 비교하게 됩니다.

 

 

Bool 옵저버블을 비교하는 Test Code

 

Bool Observable 은 문제 없이 테스트 가능하지만 여기서 Void Observable 에서 문제점이 발생하게 됩니다.

.next 로 들어가는 요소는 Equatable 을 준수해야 하기 때문입니다.

 

 

 

 

RxSwift 저장소에서 해당 문제가 논의되며 PR이 올라왔었지만, 현재는 메인 저장소에 반영되지 않았습니다.

이를 해결하는 방식은 크게 2가지가 있습니다.

 

 

1. 별도의 테스트 객체를 선언하고, Event Time 으로 Equtable 을 준수한다.

 

2. map 을 통해 Boolean 이벤트로 변경하여 테스트한다.

-> 적은 코드로 해결할 수 있으므로 개인적으로 가장 선호하는 방식입니다.

 

 

map 으로 Bool 이벤트로 변경하기

 

 

다음과 같이 코드를 작성하면 Void 옵저버블을 쉽게 테스트할 수 있습니다.

 

 

'iOS Dev > Testing' 카테고리의 다른 글

iOS 뷰 컨트롤러 간단하게 테스트 코드 연습하기 ( with Unit Test )  (0) 2021.09.26
iOS URLSession Test Double 만들기  (0) 2021.08.17
    'iOS Dev/Testing' 카테고리의 다른 글
    • iOS 뷰 컨트롤러 간단하게 테스트 코드 연습하기 ( with Unit Test )
    • iOS URLSession Test Double 만들기
    heoblitz
    heoblitz
    iOS, Swift 관련 포스팅을 주로 작성합니다.

    티스토리툴바