我有一个班级:
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)
}
我无法通过测试。我尝试了===
,XCTAssertEqual
,XCTAssertTrue
- 但似乎没有任何效果。
答案 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)