在 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,所以我无法证明它们有多好,或者它们是否能满足您的需求,只是我能够快速找到的一些):

https://github.com/katowulf/mockfirebase

https://github.com/soumak77/firebase-mock