gpt4 book ai didi

android - RxJava2 JUnit 测试

转载 作者:行者123 更新时间:2023-11-29 01:13:43 25 4
gpt4 key购买 nike

我在对 RxJava 代码部分进行单元测试时遇到了一些麻烦。我想测试下面的方法。这是一个演示者方法。

public void onSearchQueryChanged(String searchQuery) {
backendService.getShopResultsCount(searchQuery)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(result -> {
if (isViewAttached()) {
getView().hideShopSearchInProgress();
getView().displayShopSearchResultCount(result.getSearchResponse().getNumberOfHits());
}
}, error -> {
if (isViewAttached()) {
getView().hideShopSearchInProgress();
}
});
}

在最好的情况下,我想模拟 backendService 并针对特定搜索查询和附加/分离 View 测试此用例。

我做了一些研究,我知道 toBlocking()test() 方法。他们都假设我有可用的 Observable。我想我必须以某种方式拆分该方法。您对此有何看法?

我的堆栈:RxJava2、 Dagger 、MVP。

最佳答案

在我们的项目中,我们编写如下代码:

Mockito.when(backendService.getShopResult(Mockito.any())).thenReturn(Observable.just(Some Data)

您可以通过以下方式解决调度程序:

@Inject
Scheduler subscribeOn;

并在测试中通过 Schedulers.test()Schedulers.immediate()

或者你不能使用 TestRuleRxJavaPlugins.registerSchedulersHook()

关于android - RxJava2 JUnit 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41242979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com