2017-03-03 82 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

同意你約旦 - 感謝分享它 - 。我會嘗試這些並在此發佈結果 –