3

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

1 回答 1

3

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

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)
于 2018-02-09T09:58:14.690 回答