Swift 2 中与 XCTAssert 的对象比较

Object Comparison with XCTAssert in Swift 2

我有一个class:

class Person: NSObject {
    var name: String

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

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

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

    XCTAssert(x == y)
}

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

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

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

并且因为你继承自NSObject已经实现了它,你只需要实现功能而不需要添加EquatablePerson class(这实际上不会编译,因为它已经在 NSObject 声明中声明)

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

XCTAssert(x.name == y.name)