如何通过测试中的重复事件跳过网络通话?

问题描述 投票:1回答:1

我不确定是否错过了MvRx,MvRxTestRule或RxJava中的内容。

通常,我想在ViewModel中测试网络呼叫以及是否触发另一个呼叫。所以当我有这样的事情:

fun fetchResult() {
 someRepository.fetchResult()
  .compose(schedulerProvider.getSchedulersForSingle())
  .execute {
    copy(
     ...
    )
  }
}

在单元测试中有效:

viewModel?.fetchResult()
viewModel?.someEvent()
withState(viewModel!!) {
    assert(it.someOtherRequest == Uninitialized)
}

但是,如果通话重复:

fun fetchResult() {
  withState { state ->
    disposable = Observable.interval(0L, 6L, TimeUnit.SECONDS)
      .flatMapSingle {
        revolutRepository.fetchResult()
          .compose(schedulerProvider.getSchedulersForSingle())
      }
      .compose(schedulerProvider.getSchedulersForObservable())
      .execute {
        copy(
          ...
        )
      }
  }
}

我无法通过测试中的viewModel?.fetchResult()。我该如何运作?

MvRxTestRule()在测试的伴随对象中。

android unit-testing rx-java mvrx
1个回答
0
投票

我将带有间隔的呼叫移至仓库,并对其进行了嘲笑。那解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.