私のプロジェクトをRx v1からRx v2に変換しています。現在、v1 Observable
の一部をv2 Flowable
に変更しています。Rx v2 Flowableの同期ユニットテストの作成
(スポックを使用してGroovyで書かれたユニットテストとAndroidのプロジェクトにおけるITS)
通常、私はちょうどフックを使用してスケジューラをオーバーライドします。私はまだv2でスケジューラーハンドラーを登録することでこれを行うことができます。これにより、Observable
は常に(新しい?)Schedulers.single()
を使用して同期されます。しかし、Flowable
は、背圧機械(?)のために依然として非同期です。
私は、以下のものを使用していることを解決してみました:
Flowable<LogEntry> flowable = Flowable.create(new FlowableOnSubscribe<LogEntry>() {
@Override
void subscribe(FlowableEmitter<LogEntry> emitter) throws Exception {
for (def log : logs) {
emitter.onNext(log)
}
emitter.onComplete()
}
}, FlowableEmitter.BackpressureMode.NONE);
しかし、まだ彼らは非同期になりこと。
私はこのようなスケジューラオーバーライドしました:私はObservable
sがこのように同期して動作しますが、Flowable
S(背圧メカニックの脇)しない理由を把握することができないよう
RxJavaPlugins.reset()
RxJavaPlugins.setIoSchedulerHandler(new Function<Scheduler, Scheduler>() {
@Override
Scheduler apply(Scheduler scheduler) throws Exception {
return Schedulers.single()
}
})
RxAndroidPlugins.reset()
RxAndroidPlugins.setMainThreadSchedulerHandler(new Function<Scheduler, Scheduler>() {
@Override
Scheduler apply(Scheduler scheduler) throws Exception {
return Schedulers.from(new Executor() {
@Override
void execute(Runnable command) {
command.run()
}
})
}
})
を
ありがとうございます! v1の「即時」スケジューラの置き換えを探していました。 –
私たちはその話題に取り組んでいますが、その事実を文書に加えることは意味がありますか? –
どのドキュメントですか? – akarnokd