- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
正如您从下面的代码中看到的,我正在尝试测试在我的存储库中发生的 doOnComplete()
调用的行为。但是,当我模拟客户端的注入(inject)依赖项时,我使用 Observable.just()
返回项目,不再调用 doOnComplete()
。根据 RxJava2,我相信这是故意的。我不确定如何解决这个问题。
@Singleton
public class Repository {
private SomeNetworkClient client;
private SomeCache cache;
@Inject
public Repository(SomeNetworkClient client, SomeCache cache) {
this.client = client;
this.cache = cache;
}
public Observable<SomeItem> getSomeItem() {
return client.getSomeItem()
.doOnComplete(() -> cache.doThisOnComplete())
.doOnError(throwable -> someError);
}
}
public class RepositoryTest {
private Repository testedRepository;
@Mock
SomeNetworkClient client;
@Mock
SomeCache cache;
@Mock
SomeItem someItem;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
testedRepository = new Repository(client, cache);
when(client.getSomeItem())
.thenReturn(Observable.just(someItem));
}
@Test
public void thisTestFails() {
testedRepository.getSomeItem().blockingFirst();
// This fails because it appears that mocking with
// Observable.just() makes doOnComplete() not be invoked.
verify(cache.doThisOnComplete());
}
}
最佳答案
你代码中的问题是,blockingFirst()
不会关心听完整的事件发生。它会立即返回流中的第一项和dispose from observable。 .
相反,您可以这样执行断言:
testedRepository
.getSomeItem()
.test()
.assertComplete()
关于java - 测试 RxJava2 doOnComplete(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44448788/
我有这样的东西: service.getStuff() .map(...) .observeOn(AndroidSchedule
正如您从下面的代码中看到的,我正在尝试测试在我的存储库中发生的 doOnComplete() 调用的行为。但是,当我模拟客户端的注入(inject)依赖项时,我使用 Observable.just()
在这段代码中: Rx.Observable.range(0,8) .doOnCompleted(() => console.log("range complete")) .take(1
我是 RxScala Observables 的新手,在组合使用 take(n) 和 doOnCompleted() 时遇到奇怪的行为。 下面我有一个测试示例,我相信第一个订阅是正确的(开头为 tak
我有以下情况:我需要从数据库获取数据。当我尝试进入 UI 线程时(这是我的做法): List movies = new ArrayList<>(); for (MovieEntity movie:mo
我是 RX Java 的新手,我有一个问题。我有一个 completable 并且想在获得一个值并在 emmition 的一个步骤中执行一些操作后继续我的操作。 if (mIsCopy) {
我尝试从服务器获取一些数据。 Observable> backendObservable = mCountriesApi.getCountries() .subscribeOn
我正在学习 RxAndroid,并从我项目中的一个非常简单的示例开始。即获取可观察的用户个人资料图片 URL 响应。 下面是获取字符串 URL 值的代码,我使用 Picasso 加载图像 URL。当我
我有一个 Completable observable,我正在使用 doOnComplete() 运算符来更新我的事件。但是,当我使用 setValue 更新实时数据时,用 postValue 替换对
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 4 年前。 Improve
我是一名优秀的程序员,十分优秀!