我具有下面的功能,首先检查数据库,如果数据库为空,然后检查远程源并删除旧的数据并保存新数据,并从db获取新数据以将数据库用作单一事实来源。
fun getPostFlowOfflineFirst(): Flow<List<Post>> {
return flow { emit(repository.getPostEntitiesFromLocal()) }
.map {
if (it.isEmpty()) {
repository.run {
val data = fetchEntitiesFromRemote()
deletePostEntities()
savePostEntities(data)
getPostEntitiesFromLocal()
}
} else {
it
}
}
.flowOn(dispatcherProvider.ioDispatcher)
.catch { throwable ->
emitAll(flowOf(listOf()))
}
.map {
toPostListOrError(it)
}
}
我知道我可以将getPostEntitiesFromLocal()
替换为data
,但是我的问题是我是否可以模拟一个函数以返回称为不同时间的不同值。