【问题标题】:Swift enum + associated value + inline case checkSwift 枚举 + 关联值 + 内联大小写检查
【发布时间】:2018-02-09 09:34:52
【问题描述】:

我有以下用于返回异步 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

【问题讨论】:

    标签: swift enums associated-types quick-nimble


    【解决方案1】:

    如果您的目标是仅检查成功/失败(而不是成功或失败案例的详细信息),您可以使用只读变量 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-15
      • 1970-01-01
      • 1970-01-01
      • 2014-11-10
      • 2016-06-09
      相关资源
      最近更新 更多