Firebase 在检测测试中,当禁用网络时,如何使Cloud Firestore写入命令成功?
因此,我尝试将Cloud Firestore离线缓存仅用作检测测试的API,以避免在集成测试期间必须从服务器数据库进行读写 首先,在我的测试设置方法中,我调用这个方法Firebase 在检测测试中,当禁用网络时,如何使Cloud Firestore写入命令成功?,firebase,kotlin,google-cloud-firestore,offline-caching,instrumented-test,Firebase,Kotlin,Google Cloud Firestore,Offline Caching,Instrumented Test,因此,我尝试将Cloud Firestore离线缓存仅用作检测测试的API,以避免在集成测试期间必须从服务器数据库进行读写 首先,在我的测试设置方法中,我调用这个方法 protected fun setFirestoreToOfflineMode() { Tasks.await(FirebaseFirestore.getInstance().disableNetwork()) } 然后,在每个相关测试开始时,我使用 fun givenHasTrips(vararg trips: Tri
protected fun setFirestoreToOfflineMode() {
Tasks.await(FirebaseFirestore.getInstance().disableNetwork())
}
然后,在每个相关测试开始时,我使用
fun givenHasTrips(vararg trips: Trip) {
GlobalScope.launch(Dispatchers.Default) {
trips.forEach {
firestoreTripApi.put(it)
}
}
}
在该put方法中,我有以下代码:
try {
Tasks.await(tripCollection().document(tripData.id).set(tripData)),
firestoreApiTimeoutSeconds, TimeUnit.SECONDS)
Either.Right(Unit)
} catch (e: Throwable) {
Either.Left(Failure.ServerError)
}
我正在调用set()方法,并等待一个成功的结果,以便能够返回操作成功的消息,然后更新我的UI
发生的情况是缓存数据库写入正确,但“set()”函数超时,因为数据库处于脱机模式。我读到Firestore仅在服务器数据库写入正确的情况下确认成功。如果是这种情况,我不知道当严格在脱机缓存模式下操作时,是否有可能使此调用不超时
是否有一种解决方案可以让Firestore将本地缓存数据库视为真相的来源,并在处于脱机模式时返回成功结果(仅用于测试?修改数据库(设置、更新、删除)的方法返回的任务仅在数据完全提交到云时发出回调。没有办法改变这种行为
相反,您可以为预期更改的文档设置一个侦听器,并等待该侦听器触发。监听器甚至在脱机时也会触发。修改数据库(设置、更新、删除)的方法返回的任务仅在数据完全提交到云时发出回调。没有办法改变这种行为 相反,您可以为预期更改的文档设置一个侦听器,并等待该侦听器触发。即使在脱机状态下,侦听器也会触发