我需要使用 concatMap 对 Observable 进行单元测试,然后进行组合。
我正在使用 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
,作曲家为空
当我先写
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
对象
这是我的测试课
@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)
})
}
}