Swift枚举+关联值+内联案例检查

时间:2018-02-09 09:34:53

标签: swift enums associated-types quick-nimble

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

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

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

我知道我可以使用以下语句打开result-enum

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

我希望存档的是使用单行语句检查使用expect检查结果是否成功

expect(case Result.success(let configuration) = result).to(beTrue()) <-- not compiling

1 个答案:

答案 0 :(得分:3)

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