【发布时间】:2014-08-16 16:22:05
【问题描述】:
XCode 6,测试版 5
我有一个这样的单元测试:
函数 testMyObjectsEqual() { //.... XCTAssertEqual(myObject, myOtherObject, "\(myObject) 和 \(myOtherObject) 应该相等") }XCTAssertEqualObjects 在 Swift 中不再可用,因为该语言不区分标量和对象。
所以我们必须使用 XCTAssertEqual 这会导致以下错误:
"Type MyObject 不符合 Equatable 协议"
我发现的唯一解决方法是从 NSObject 继承 (MyObject) 以便我可以执行以下操作:
XCTAssert(myObject == myOtherObject, "\(myObject) 和 \(myOtherObject) 应该相等")
所以我的问题是:有没有办法(从 beta 5 开始)将 XCTAssertEqual 用于自定义类型,而不必依赖 NSObject 或使用“==”重载乱扔所有自定义类型?
【问题讨论】:
-
我问了一个类似的问题,我想知道它可能是重复的。请参阅stackoverflow.com/questions/34764509/… 从我可以看到 XCTAssertEquals 不会触发 == 等价运算符。而对于自定义类,它只为对象引用相等返回 true
标签: ios unit-testing swift