2017-03-03 7 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는 자체 시험을 거쳐야합니다. 필자는 Firebase의 모의 (mock)를 설정하고이를 테스트 케이스에 제공하고 코드가 필요한 호출을하는지 확인합니다. GitHub에는 몇 개의 Firebase 테스트가 있습니다. (나는 중포 기지를 사용하지 않는, 그래서 그들은 심지어 단지 내가 할 수 있었다 몇몇 빠르게 찾기 위해, 필요에 맞게 있을지 나는이 얼마나 좋은 증명할 수 없거나) :

https://github.com/katowulf/mockfirebase

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

+0

요르단에 동의하십시오 - 공유해 주셔서 감사합니다 -. 그것들을 시험해보고 여기에 결과를 게시하려고합니다. –