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)
}
我无法通过测试。我尝试了 ===
、XCTAssertEqual
、XCTAssertTrue
- 但似乎没有任何效果。
为了能够使用 == 运算符测试 2 个对象,您需要为您的 Person
class 实施 Equatable
协议,例如:
func ==(lhs: Person, rhs: Person) -> Bool {
return lhs.name == rhs.name
}
并且因为你继承自NSObject
已经实现了它,你只需要实现功能而不需要添加Equatable
到Person
class(这实际上不会编译,因为它已经在 NSObject
声明中声明)
如果您不想实施 Equatable
协议,您可以像这样检查 name
字符串相等性:
XCTAssert(x.name == y.name)
我有一个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)
}
我无法通过测试。我尝试了 ===
、XCTAssertEqual
、XCTAssertTrue
- 但似乎没有任何效果。
为了能够使用 == 运算符测试 2 个对象,您需要为您的 Person
class 实施 Equatable
协议,例如:
func ==(lhs: Person, rhs: Person) -> Bool {
return lhs.name == rhs.name
}
并且因为你继承自NSObject
已经实现了它,你只需要实现功能而不需要添加Equatable
到Person
class(这实际上不会编译,因为它已经在 NSObject
声明中声明)
如果您不想实施 Equatable
协议,您可以像这样检查 name
字符串相等性:
XCTAssert(x.name == y.name)