u-ryo's blog

various information for coding...

Schedulers.newThread() or Schedulers.io()

| Comments

Robolectricでtestを書いていて、 どうも上手く行かないところがありました。 「上手く行かない」というのは「Test class内で(RxJava1系なので)RxJavaHooks.setOnIOScheduler(s -> Schedulers.immediate());しているにも関わらず、 test対象classでsubscriberが動いてしまう」というものです。

どうしてかなぁ、.subscribe(...)の中で.subscribe(...)してるからかなぁ、 RxJava のテスト(1): TestSubscriber, test(), TestSchedulerを見て、 じゃぁっていうんでTestScheduler scheduler = Schedulers.test();して何度かscheduler.triggerActions();しても現象変わらずでした。

悩んだ末、わかったのは、 test対象classでは.subscribeOn(Schedulers.newThread())していた、 ということでした。 なぁんだ。

そういえばちょっと前に書いたところだったので、 まだSchedulers.newThread()にしちゃってたんですね。 今回Schedulers.io()に変えました。 Androidでも効くんでしょうか。

Comments