2017-02-22 73 views
1

在我當前的設置中,我的域對象只有一個構造函數(並且希望保持這種方式)。說我的班級看起來像這樣:在Swift中測試FIRDataSnapshot

class Person: FIRDataObject //my custom class 

let name: String 
let age: Int 

required init (snapshot: FIRDataSnapshot) { 
    self.name = snapshot.json["name"].string 
    self.age = snapshot.json["age"].int 
} 

..現在我想測試我的班級。但是我找不到任何方法從我的測試中創建一個新的FIRDataSnapshot。 F.ex我想要的東西像

class PersonTest: XCTest 

    test_create_person() { 
     let snapshot = FIRDataSnapshot("{name: "Kim", "age", 33}") <-- I want something like this 
     let person = Person(snapshot: snapshot) 
     XCTAssertEqual(...) 
    } 

任何人都想出瞭如何做到這一點?

回答

0

我想通過子類FIRDataSnapshot的方式(使用SwiftyJson,但多數民衆贊成可選)。請讓我知道,如果你找到一個更好的:

class PersonTest: XCTest 

    test_create_person() { 
     let person = Person(snapshot: FIRPersonDataSnapshot()) 
     XCTAssertEqual(person.name, "Kim") 
    } 

class FIRPersonDataSnapshot: FIRDataSnapshot 

    override var value : Any? { 
     let json: JSON = [ 
      "name": "Kim", 
      "age": 33, 
     ] 
     return json.dictionaryObject 
    }