Мне нужно протестировать Observable с помощью concatMap, а затем создать.
Я использую RxJava и библиотеку mockk.
Я пытался использовать два отдельных every
оператора для насмешки результатов.Но когда я звоню сначала
every {
remoteLocalInteractor.isServerConfigurationEmpty()
.compose(schedulerProvider.ioToMainObservableScheduler())
} returns Observable.just(true)
, а затем
every {
remoteLocalInteractor.isServerConfigurationEmpty()
} returns Observable.just(true)
interactor.isServerConfigurationEmpty()
возвращает ObservableJust
.Все в порядке
Но interactor.isServerConfigurationEmpty().compose()
возвращает NPE
, композитор нулевой
![Case 1](https://i.stack.imgur.com/n8l50.png)
И когда я пишу первый
every {
interactor.isServerConfigurationEmpty().compose(...)
} returns Observable.just(true)
, а затем
every {
interactor.isServerConfigurationEmpty()
} returns Observable.just(true)
interactor.isServerConfigurationEmpty().compose()
возвращает ObservableJust
.Хорошо.
Но interactor.isServerConfigurationEmpty()
возвращает Observable(child of #1#3)
, и мне нужно иметь ObservableJust
Объект
![Case 2](https://i.stack.imgur.com/DeB2r.png)
Этомой тестовый класс
@RunWith(JUnit4::class)
class RemoteLocalPresenterTest : BaseTest() {
@Before
override fun setup() {
super.setup()
remoteLocalInteractor = spyk()
remoteLocalPresenter = RemoteLocalPresenter(
remoteLocalInteractor,
schedulerProvider,
compositeDisposable,
remoteLocalConfigConverter
)
remoteLocalPresenter.onAttach(remoteLocalView)
}
@Test
fun
testShouldSaveDefaultConfigurations_serverConfigurationsIsEmpty_onSuccess(){
every {
remoteLocalInteractor.isServerConfigurationEmpty()
} returns Observable.just(true)
every {
remoteLocalInteractor.isServerConfigurationEmpty()
.compose(schedulerProvider.ioToMainObservableScheduler())
} returns Observable.just(true)
remoteLocalPresenter.shouldSaveDefaultConfigurations(activity)
}
}
И это мой тест для проверки
override fun shouldSaveDefaultConfigurations(activity: BaseActivity) {
getView()?.showProgress()
interactor?.let { interactor ->
interactor.isServerConfigurationEmpty().concatMap { isEmpty ->
if (isEmpty)
Observable.just(ClientTO())
else
Observable.just(false)
}.compose(schedulerProvider.ioToMainObservableScheduler())
.subscribe({ res ->
when (res) {
is ClientTO -> {
getView()?.hideProgress()
...
...
...
}
else -> {
getView()?.let {
...
...
...
}
}
}
}, { err ->
CommonUtil.handleErrors(err)
})
}
}