XCTWaiter.Result在XCTAssertEqual打印时,不会显示每个结果是哪种情况。

问题描述 投票:0回答:1

我使用的是 XCTWaiter 来等待一个期望,然后我通过断言等待的结果是实现了这个期望 .completed,就像这样。

let result = XCTWaiter.wait(for: [expectation], timeout: 5)
XCTAssertEqual(result, .completed)

从功能上讲,这很好用,但是如果断言失败了,错误信息没有告诉我结果是哪种情况。

XCTAssertEqual失败了。("XCTWaiterResult") 不等于("XCTWaiterResult")

这对调试很不方便。如何让断言失败消息报告的情况为 XCTWaiter.Result?

swift xctest
1个回答
0
投票

使 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")

© www.soinside.com 2019 - 2024. All rights reserved.