2017-03-03 49 views
1

我正在使用firebase将应用程序放在一起,并且我想确保可以对其执行测试。关于它的文档并不多 - 所以我想看看我是否以正确的方式来做 - 或者如果我完全错了。在swift中测试Firebase类Xctest

一些对此解决方案感觉不对劲的东西: 1.我每次启动一个新的测试类时都运行FirApp.configure--是不是有一种可以共享的方式?例如类似AppDelegate在应用程序上的操作。目前这似乎是相互冲突的,所以测试不会写任何东西给数据库。 2.每次我做一个新课程时,我都必须认证 - 这是可以共享的。 (即在预安装安装文件中?)

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) 
    } 
} 

想法是如何让测试工作。

感谢

回答

1

(我的观点是,)你真的不应该测试一个火力地堡做什么它应该,你应该只测试一个代码做什么它应该。 Firebase应该有自己的测试。我会为Firebase设置一个模拟,并将其提供给您的测试用例,并确保您的代码正在进行应该的调用。 GitHub上有一些Firebase测试嘲笑。 (我没有用火力地堡,所以我不能证明如何的好,这些都是,或者如果他们甚至会满足您的需求,只是一些我能很快找到):

https://github.com/katowulf/mockfirebase

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

+0

同意你约旦 - 感谢分享它 - 。我会尝试这些并在此发布结果 –