使用 Firebase (Swift) 进行单元测试
Posted
技术标签:
【中文标题】使用 Firebase (Swift) 进行单元测试【英文标题】:Unit Testing with Firebase (Swift) 【发布时间】:2019-09-07 20:13:50 【问题描述】:尝试使用 Firebase 进行一些简单的单元测试,但由于某种原因 Firestore 无法初始化:
ModelTests.swift:
func testFirebase() throws
// THIS IS ALWAYS "UNINITIALIZED"
let db = Firestore.firestore()
// Because db isn't initialized correctly, this ref will always be nil.
let ref: DocumentReference? = db.document("unit_testing/xxx")
ref?.setData([
"id" : "someID",
"name" : "goldenjoe",
"another" : "bmus",
"testDate" : Date()
],
merge: true,
completion: err in
if let err = err
print("Error adding document: \(err)")
else
print("Document added with ID: \(ref!.documentID)")
)
AppDelegate.swift:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool
// Set up Firestore
FirebaseApp.configure()
Pod 文件:
platform :ios, '11.0'
target 'MyWork' do
use_frameworks!
# ignore all warnings from all pods
inhibit_all_warnings!
# Pods for MyWork
pod 'CoreXLSX'
pod 'Eureka'
pod 'Firebase/Firestore'
pod 'Firebase/Auth'
pod 'ProgressHUD'
#pod 'GoogleSignIn'
pod 'SteviaLayout'
target 'MyWorkTests' do
inherit! :complete
end
end
但是,当我正常运行应用程序时,我可以在应用程序的其他部分正常使用 Firebase。在网上找不到任何有关单元测试所需的特殊配置的信息。
【问题讨论】:
【参考方案1】:Welp,不能说具体的配置问题是什么,但这最终成为“尝试将其关闭再打开”的解决方案之一。
pod deintegrate
pod cache clean --all
pod install
另外,与文档相反,您需要在 podfile 中包含 Firebase/Core
,否则您将无法初始化 Firestore。
【讨论】:
以上是关于使用 Firebase (Swift) 进行单元测试的主要内容,如果未能解决你的问题,请参考以下文章
新的 Firebase 数据导致 TableView 单元格闪烁 (Firebase/iOS/Swift)
Firebase - iOS Swift:使用从两个单独的子节点检索到的数据加载表格视图单元格
Swift 如何为使用 Firebase 投票的用户添加 5 星评分