2017-02-22 75 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 
    }