Swift 枚举 + 关联值 + 内联大小写检查

Swift enum + associated value + inline case check

我有以下 swift 枚举用于返回异步 API-响应:

enum Result<U: Equatable> {
  case success(output: U)
  case failure(error: Error)
}

为了简化我的单元测试实现,我想检查我的方法之一返回的结果枚举是否等于成功

我知道我可以使用以下语句解包结果枚举

if case Result.success(let configuration) = result {
    // use unwrapped configuration object
}

我想存档的是使用单行语句检查 expect

检查结果是否成功
expect(case Result.success(let configuration) = result).to(beTrue()) <-- not compiling

如果您的目标是仅检查 success/failure(不是成功或失败案例的详细信息),您可以使用只读变量 isSuccessisFailure 扩展枚举:

enum Result<U: Equatable> {

    case success(output: U)
    case failure(error: Error)

    var isSuccess: Bool {
        switch self {
        case .success:
            return true
        default:
            return false
        }
    }
    var isFailure: Bool {
        switch self {
        case .failure:
            return true
        default:
            return false
        }
    }
}

并期望结果是成功的:

expect(result.isSuccess)