RxSwift 에서 다음 이벤트로 값을 전달할 필요가 없는 경우에는 Void Observable 를 사용합니다.
그리고 테스트 코드를 작성하기 위해서는 RxTest 에 있는 TestScheduler 를 이용하여
가상 시간의 이벤트들을 방출하는 옵저버블을 만들고, XCTAssertEqual 을 통해 events 를 비교하게 됩니다.
Bool Observable 은 문제 없이 테스트 가능하지만 여기서 Void Observable 에서 문제점이 발생하게 됩니다.
.next 로 들어가는 요소는 Equatable 을 준수해야 하기 때문입니다.
RxSwift 저장소에서 해당 문제가 논의되며 PR이 올라왔었지만, 현재는 메인 저장소에 반영되지 않았습니다.
이를 해결하는 방식은 크게 2가지가 있습니다.
1. 별도의 테스트 객체를 선언하고, Event Time 으로 Equtable 을 준수한다.
2. map 을 통해 Boolean 이벤트로 변경하여 테스트한다.
-> 적은 코드로 해결할 수 있으므로 개인적으로 가장 선호하는 방식입니다.
다음과 같이 코드를 작성하면 Void 옵저버블을 쉽게 테스트할 수 있습니다.
'iOS Dev > Testing' 카테고리의 다른 글
iOS 뷰 컨트롤러 간단하게 테스트 코드 연습하기 ( with Unit Test ) (0) | 2021.09.26 |
---|---|
iOS URLSession Test Double 만들기 (0) | 2021.08.17 |