2017-03-03 9 views
1

私はfirebaseを使ってアプリケーションを構築しています。私はその上でテストを実行できることを確認したいと思います。それについての多くの文書はありません - 私は正しい方法でそれをやっているかどうか、私が完全に間違っているかどうかを見たいと思っていました。迅速なXctestでのFirebaseクラスのテスト

このソリューションについて正しく感じないことのいくつか: 1.私は新しいテストクラスをスピンアップするたびにFirApp.configureを実行しています - これは共有できる方法ではありませんか?たとえば、AppDelegateがアプリでどのように動作するかと同じように。現在のところ、これは矛盾しているので、テストはDBに何も書き込まれません。 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はそれは、あなただけではYOURコードは、それがになって何しテストしなければならないことになっているものないことをテストするべきではありません。 Firebaseには独自のテストが必要です。私はFirebase用のモックを設定し、それをテストケースに提供し、あなたのコードが必要な呼び出しを行っていることを確認します。 GitHubにはFirebaseテストモックがいくつか用意されています。 (私はFirebaseを使用していませんでしたので、私はこれらがどのように良いのか、彼らも私はすぐに見つけることができたことだけでいくつかの、あなたのニーズに合うだろう場合は証明することはできません):

https://github.com/katowulf/mockfirebase

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

+0

あなたと同意します。ジョーダン - それを共有していただきありがとうございます。それらを試して、ここに結果を投稿しようとしています –

関連する問題