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(不是成功或失败案例的详细信息),您可以使用只读变量 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)
我有以下 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(不是成功或失败案例的详细信息),您可以使用只读变量 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)