在 swift Xctest 中测试 Firebase 类
Testing Firebase Classes in swift Xctest
我正在使用 firebase 组装一个应用程序,我想确保我可以 运行 测试它。没有太多关于它的文档 - 所以我想看看我是否以正确的方式做 - 或者我是否完全错误。
此解决方案有一些不妥之处:
1. 每次启动新测试时,我都会 运行ning FirApp.configure class - 没有办法可以共享吗?例如类似于 AppDelegate 在应用程序上的操作方式。目前这似乎是冲突的,因此测试没有向数据库写入任何内容。
2. 每次我做一个新的 class 时我都必须授权 - 这是否可以共享。 (即在 Pre-Setup 安装文件中?)
import XCTest
import Firebase
@testable import BurgerRestaurant
class BurgerTests: XCTestCase {
var sut:Burger!
override func setUp() {
super.setUp()
FIRApp.configure()
self.sut = Constants.MockedObjects.testBurger
}
override func tearDown() {
sut = nil
super.tearDown()
}
func testSave() {
if TestSettings.useRealFBaseCalls {
let testSave = self.expectation(description: "Saving Burger Object")
FIRAuth.auth()?.signIn(withEmail: TestSettings.testFireBUser, password: TestSettings.testFireBPass, completion: { (user, error) in
self.sut.save(completion: {
testSave.fulfill()
})
})
}
self.waitForExpectations(timeout: 15, handler: nil)
}
}
欢迎就如何让测试工作提出想法。
谢谢
(我的意见是)您真的不应该测试 Firebase 是否按照预期进行,您应该只测试 YOUR 代码是否按预期进行。 Firebase 应该有自己的测试。我会为 Firebase 设置一个模拟,并将其提供给您的测试用例,并确保您的代码进行应有的调用。 GitHub 上有几个可用的 Firebase 测试模拟。 (我没有使用过 Firebase,所以我无法证明它们有多好,或者它们是否能满足您的需求,只是我能够快速找到的一些):
我正在使用 firebase 组装一个应用程序,我想确保我可以 运行 测试它。没有太多关于它的文档 - 所以我想看看我是否以正确的方式做 - 或者我是否完全错误。
此解决方案有一些不妥之处: 1. 每次启动新测试时,我都会 运行ning FirApp.configure class - 没有办法可以共享吗?例如类似于 AppDelegate 在应用程序上的操作方式。目前这似乎是冲突的,因此测试没有向数据库写入任何内容。 2. 每次我做一个新的 class 时我都必须授权 - 这是否可以共享。 (即在 Pre-Setup 安装文件中?)
import XCTest
import Firebase
@testable import BurgerRestaurant
class BurgerTests: XCTestCase {
var sut:Burger!
override func setUp() {
super.setUp()
FIRApp.configure()
self.sut = Constants.MockedObjects.testBurger
}
override func tearDown() {
sut = nil
super.tearDown()
}
func testSave() {
if TestSettings.useRealFBaseCalls {
let testSave = self.expectation(description: "Saving Burger Object")
FIRAuth.auth()?.signIn(withEmail: TestSettings.testFireBUser, password: TestSettings.testFireBPass, completion: { (user, error) in
self.sut.save(completion: {
testSave.fulfill()
})
})
}
self.waitForExpectations(timeout: 15, handler: nil)
}
}
欢迎就如何让测试工作提出想法。
谢谢
(我的意见是)您真的不应该测试 Firebase 是否按照预期进行,您应该只测试 YOUR 代码是否按预期进行。 Firebase 应该有自己的测试。我会为 Firebase 设置一个模拟,并将其提供给您的测试用例,并确保您的代码进行应有的调用。 GitHub 上有几个可用的 Firebase 测试模拟。 (我没有使用过 Firebase,所以我无法证明它们有多好,或者它们是否能满足您的需求,只是我能够快速找到的一些):