我真的很想通过利用firebase-server的本地安装来编写一些集成测试,这将模拟实时数据库服务器。
我已经安装它并从CLI启动它:node_modules/.bin/firebase-server -p 5000
但是我很难通过Swift连接到它。按照Firebase的文档,需要下载GoogleService-Info.plist
项目中的利用。这显然必须更改,因为我想改为连接到本地服务器。
这就是我现在所拥有的AppDelegate.swift
:
var firebaseConfig: String!
if isRunningTests() {
// unit test server (idealy local)
firebaseConfig = Bundle.main.path(forResource: "GoogleService-Info-tests", ofType: "plist")
} else {
#if DEBUG
// staging server
firebaseConfig = Bundle.main.path(forResource: "GoogleService-Info", ofType: "plist")
#else
// production server
firebaseConfig = Bundle.main.path(forResource: "GoogleService-Info-prod", ofType: "plist")
#endif
}
guard let options = FIROptions(contentsOfFile: firebaseConfig) else {
fatalError("Invalid Firebase configuration file.")
}
FIRApp.configure(with: options)
FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
FIRDatabase.database().persistenceEnabled = true
这意味着对于单元测试,我将加载GoogleService-Info-tests
plist并连接到远程测试数据库。我该如何连接ws://test.firebase.localhost:5000
?对我来说,尚不清楚内部哪些变量options
是强制性的,需要提供。
您可以使用该FIROptions init!(googleAppID: String!, bundleID: String!, gcmSenderID GCMSenderID: String!, apiKey APIKey: String!, clientID: String!, trackingID: String!, androidClientID: String!, databaseURL: String!, storageBucket: String!, deepLinkURLScheme: String!)
方法,并从真实应用程序中传入AppId,bundleId,SenderID,然后传入databaseURL(可以是本地URL)。您应该能够传递nil
给其他人并且很好(尽管您可能必须使编译器警告保持沉默,因为它们在Swift中似乎被标记为不可为空)。
或者,您可以更改一个字段GoogleService-Info-tests.plist
以指向新的数据库。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句