How would I test a method that looks like this?
// in unit test suite
var afterSubscribeClosureEntered = false
viewModel.afterSubscribe = { res in
afterSubscribeClosureEntered = true
}
viewModel.someMethod()
expect(afterSubscribeClosureEntered).to(beTrue()) // if I used toEventually, it will fail in unit test (time out, unresponsive main loop)
// view model
var afterSubscribe: ((Bool) -> Void)?
func someMethod() {
observableOne() // method that returns Observable<T>
.flatMap(observableTwo()) // returns Observable<T>
.subscribe(onNext: { val in
// some operation
self.afterSubscribe?(val)
})
.disposed(by: disposeBag)
}
I tried using toEventually but that breaks in Fastlane (time out, main loop unresponsive). The test suite succeed in XCode test though. I don't want to inject a completionHandler in someMethod
.Is there a way to test this without using toEventually and waitUntil? Thanks alot!