Swift 2中与XCTAssert的对象比较

时间:2015-11-19 16:41:49

标签: ios swift2 xctest

我有一个班级:

class Person: NSObject {
    var name: String

    init(name: String) {
        self.name = name
    }
}

在我的测试中,我初始化了同一个类的两个实例,然后比较它们:

func testSomething() {
    let x = Person("A")
    let y = Person("A")

    XCTAssert(x == y)
}

我无法通过测试。我尝试了===XCTAssertEqualXCTAssertTrue - 但似乎没有任何效果。

2 个答案:

答案 0 :(得分:2)

为了能够使用==运算符测试2个对象,您需要为Equatable类实现Person协议,例如:

func ==(lhs: Person, rhs: Person) -> Bool {
    return lhs.name == rhs.name
}

既然你继承了已经实现它的NSObject,你只需要实现该函数而不需要将Equatable添加到Person类(实际上不会编译,因为它已经在NSObject声明中说明了

答案 1 :(得分:0)

如果您不想实施Equatable协议,您可以像这样检查name字符串相等:

XCTAssert(x.name == y.name)