¿Cómo no emitir datos de Flowable para testings unitarias?

Entonces, al comenzar, un pequeño context sobre lo que quiero lograr:

Tengo una function en la class DataManager llamada getBusRoutesByQuery(query: String) que devuelve Flowable<List<Route>> . Esa búsqueda de function en el almacenamiento local y remoto para las routes de autobús por la consulta dada. Estoy usando zip para combinar dos Flowables y fusionarlos en uno sin duplicates. Pero, por ejemplo, cuando el usuario utilizará la aplicación por primera vez, no tendrá datos en la fuente local, por lo que zip no funcionará. Así que encontré una function onErrorReturn y la estoy usando cuando no habrá datos para devolver. onErrorReturn devuelve una list vacía en lugar de un error, por lo que la fuente remota se zip con los datos vacíos. Y ahora, cuando estoy usando la testing Flowble.empty() para simular una situación donde no hay datos en el almacenamiento local, la testing no pasa.

Supuestos de testing :

  1. no hay datos en el almacenamiento local
  2. datos disponibles en almacenamiento remoto
  3. getBusRoutesByQuery(query: String) se llama desde DataManager
  4. los datos se recuperan

Ahora cómo se ve en el código:

 override fun getBusRoutesByQuery(query: String): Flowable<List<Route>> { val networkSourceWithSave: Flowable<List<Route>> = remoteBusDataManager .getBusRoutesByQuery(query) .doOnNext { localBusDataManager.insertBusRoutes(it) } .onErrorReturn { listOf() } val localSource: Flowable<List<Route>> = localBusDataManager .getBusRoutesByQuery(query) .onErrorReturn { listOf() } return Flowable.zip(localSource, networkSourceWithSave, BiFunction { local, remote -> mergeTwoListsWithoutDuplicates(local, remote) }) } 

y la testing:

 @Test fun getRoutesByQueryWhenLocalSourceIsNotAvailable() { `when`(localBusDataManager.getBusRoutesByQuery(QUERY)).thenReturn(Flowable.empty()) `when`(remoteBusDataManager.getBusRoutesByQuery(QUERY)).thenReturn(Flowable.just(ROUTES)) busDataManager.getBusRoutesByQuery(QUERY).subscribe(testSubscriber) testSubscriber.assertValue(ROUTES) } 

Entonces dime, ¿qué puedo hacer con zip , cuando los datos de almacenamiento local no están disponibles y cómo puedo probarlos? Gracias 😉