我使用的是 XCTWaiter
来等待一个期望,然后我通过断言等待的结果是实现了这个期望 .completed
,就像这样。
let result = XCTWaiter.wait(for: [expectation], timeout: 5)
XCTAssertEqual(result, .completed)
从功能上讲,这很好用,但是如果断言失败了,错误信息没有告诉我结果是哪种情况。
XCTAssertEqual失败了。("XCTWaiterResult") 不等于("XCTWaiterResult")
这对调试很不方便。如何让断言失败消息报告的情况为 XCTWaiter.Result
?
使 XCTWaiter.Result
符合 CustomDebugStringConvertible
. 通过实施 debugDescription
属性,你可以提供字符串解释的 XCTWaiter.Result
用于构造错误信息时。
extension XCTWaiter.Result: CustomDebugStringConvertible {
public var debugDescription: String {
switch self {
case .completed:
return "Completed"
case .incorrectOrder:
return "Incorrect Order"
case .interrupted:
return "Interrupted"
case .invertedFulfillment:
return "Inverted Fulfillment"
case .timedOut:
return "Timed Out"
@unknown default:
fatalError("Unknown XCTWaiter.Result case")
}
}
}
XCTAssertEqual失败。("Timed Out")不等于("Completed")