RxJava2 задерживает наблюдаемое до тех пор, пока не появится другое наблюдаемое - PullRequest
0 голосов
/ 22 ноября 2018

Это для целей модульного тестирования, так как я хочу проверить правильное поведение для функции, в которой два источника данных могут возвращаться в разных порядках.В настоящее время в моем модульном тесте я создаю Observable с фиктивными данными и просто использую оператор задержки, чтобы добавить задержку в 10 миллисекунд для источника данных, который я хочу вернуть вторым.Однако это кажется немного уродливым и может стать проблематичным, так как у меня все больше и больше тестов.

Есть ли способ заставить Observable ждать, пока не завершится другой Observable?

Редактировать: вотпример модульного теста, который у меня есть

public void testNetworkReturningBeforeLocal() {
    Item localItem = new Item("local");
    Item remoteItem = new Item("remote");
    when(mDatabaseMock.getItem(any())).thenReturn(Observable.just(localItem).delay(10, TimeUnit.MILLISECONDS);
    when(mApiMock.getItem(any())).thenReturn(Observable.just(remoteItem));

    TestObserver<Item> observer = new TestObserver<>();
    mRepository.getItem("blah").subscribe(observer); // calls getItem from database and API

    observer.awaitTerminalEvent();
    observer.assertResult(remoteItem);
}

Я использую delay(10, TimeUnit.MILLISECONDS) на наблюдаемой, возвращаемой базой данных, для имитации сетевого ответа, поступающего первым.То, что я хотел бы сделать, это задержать наблюдаемую базу данных до завершения наблюдаемой сети.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...