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でも効くんでしょうか。