【发布时间】:2021-04-20 06:02:37
【问题描述】:
例如,我创建了一个需要测试的示例代码
class MyViewModel() : BaseViewModel() {
private val valueSubject = BehaviorSubject.create<String>()
private val viewState = MutableLiveData<State>()
fun getViewState(): LiveData<State> = viewState
init {
disposables.add(valueSubject
.debounce(150L, TimeUnit.MILLISECONDS) //problem
.observeOn(AndroidSchedulers.mainThread())
.subscribe {
viewState.value = State(it)
})
}
fun valueChanged(value: String) {
viewState.value = State(value + " processing")
valueSubject.onNext(value)
}
}
例如,您需要编写一个文本,使用valueChanged ("12"),将捕获2 个viewState 更改,第一个更改是viewState.value = State (value + "processing"),第二个更改已经在valueSubject 订阅中。
我在debounce(150L, TimeUnit.MILLISECONDS) 中理解的问题,有这样的解决方案examples,但是有没有可能不扔掉壳?
测试的基本部分
@RunWith(MockitoJUnitRunner::class)
class Test {
@get:Rule
var rule: TestRule = InstantTaskExecutorRule()
@Before
fun setUp() {
RxAndroidPlugins.setInitMainThreadSchedulerHandler { Schedulers.trampoline() }
RxJavaPlugins.onComputationScheduler(Schedulers.trampoline())
RxJavaPlugins.setNewThreadSchedulerHandler { Schedulers.trampoline() }
RxJavaPlugins.setIoSchedulerHandler { Schedulers.trampoline() }
}
}
【问题讨论】:
标签: android unit-testing junit rx-java2