【问题标题】:How to skip network call with repeating events in test?如何在测试中跳过重复事件的网络呼叫?
【发布时间】:2020-04-30 15:02:34
【问题描述】:

我不确定我是否遗漏了 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】:

    我将带有间隔的调用移至 repo 并对其进行了嘲笑。这样就解决了问题。

    【讨论】:

      猜你喜欢
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-18
      相关资源
      最近更新 更多