Observable.Interval、"Context has changed" 错误的 RxJava 单元测试
RxJava Unit Testing for Observable.Interval, "Context has changed" error
我正在尝试为下面的代码块编写单元测试:
Observable.interval(INITIAL_DELAY, REFRESH_PERIOD, TimeUnit.SECONDS)
.flatMap {thisMethodReturnsAnObservable()}
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::onDataLoaded, this::onError)
.disposeLater())
我有一个测试规则可以用 testSchedulers 覆盖 RxSchedulers。
重要 测试可以 运行 一个一个地进行,但不能一起进行,而且 运行 覆盖被破坏并出现同样的错误。
我得到的错误是,当调试器点击 onDataLoaded
方法时,测试的 运行ning 立即停止,并显示以下消息:
默认情况下,Observable.interval
在计算调度程序上运行。因此,您需要使用带调度程序的 Observable.interval
的重载或将 Schedulers.computation
添加到您的测试规则中。
Observable.interval(INITIAL_DELAY, REFRESH_PERIOD, TimeUnit.SECONDS, [Your scheduler here])
将 ComputationSchedulerHandler 添加到我的测试规则解决了我的问题。
我正在尝试为下面的代码块编写单元测试:
Observable.interval(INITIAL_DELAY, REFRESH_PERIOD, TimeUnit.SECONDS)
.flatMap {thisMethodReturnsAnObservable()}
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::onDataLoaded, this::onError)
.disposeLater())
我有一个测试规则可以用 testSchedulers 覆盖 RxSchedulers。
重要 测试可以 运行 一个一个地进行,但不能一起进行,而且 运行 覆盖被破坏并出现同样的错误。
我得到的错误是,当调试器点击 onDataLoaded
方法时,测试的 运行ning 立即停止,并显示以下消息:
默认情况下,Observable.interval
在计算调度程序上运行。因此,您需要使用带调度程序的 Observable.interval
的重载或将 Schedulers.computation
添加到您的测试规则中。
Observable.interval(INITIAL_DELAY, REFRESH_PERIOD, TimeUnit.SECONDS, [Your scheduler here])
将 ComputationSchedulerHandler 添加到我的测试规则解决了我的问题。