TestScheduler
RxTest 4.2
RxSwift 4.2
如何正确地创建TestScheduler并向其传递在所有事件执行后终止调度器的事件?
下面的代码在启动测试调度器时进入无限循环。因为它保持同步循环,所以我没有机会阻止调度器进行测试
var testScheduler: TestScheduler = TestScheduler(initialClock: 0)
let stateObserver = testScheduler.createObserver(Bool.self)
subject.outputRelay.bind(to: stateObserver).disposed(by: bag)
let events = [next(1,true), next(10,false)]
let hotObservable = testScheduler.createHotObservable(events)
//direct events to the given relay
hotObservable.bind(to: subject.inputRelay).disposed(by: bag)
testScheduler.start() //infinite loop
//do not get called
XCTAssertEqual(stateObserver.events, [next(0, InterfaceState.started)])
testScheduler.stop()
我已经将发布的范围缩小到了
测试调度器
func findNext() -> VirtualSchedulerItem<VirtualTime>? {
while let front = _schedulerQueue.peek() {
if front.isDisposed {
_schedulerQueue.remove(front)
continue
}
return front
}
return nil
}