Я не знаю, может ли это помочь вам.
Но я дам вам немного своего кода, когда у меня будут Presenter и PresenterTest.
Presenter:
...
private void loadRepos() {
disposableManager.add(repoRepository.getTrendingRepos()
.doOnSubscribe(__ -> viewModel.loadingUpdated().accept(true))
.doOnEvent((d, t) -> viewModel.loadingUpdated().accept(false))
.doOnSuccess(__ -> viewModel.reposUpdated().run())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(dataSource::setData, viewModel.onError()));
}
...
Я наблюдаю изменения в mainThread, но в своем тесте я меняю планировщик для его запуска.
И в PresenterTest я добавляю это для запуска тестов.
PresenterTest:
public class TrendingReposPresenterTest {
static {
RxAndroidPlugins.setInitMainThreadSchedulerHandler(schedulerCallable -> Schedulers.trampoline());
}
...
private void initializePresenter() {
presenter = new TrendingReposPresenter(viewModel, repoRepository,
screenNavigator,Mockito.mock(DisposableManager.class),dataSource);
}
Вот мой одноразовый класс менеджера для обработки наблюдаемых.
DisposableManager
public class DisposableManager {
private final CompositeDisposable compositeDisposable = new CompositeDisposable();
public void add(Disposable... disposables) {
compositeDisposable.addAll(disposables);
}
public void dispose() {
compositeDisposable.clear();
}
}
Надеюсь, это поможет вам. Но я не уверен, что это твоя проблема