Перечисление 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
1 ответ
Решение
Если ваша цель - проверить только успех / неудачу (не детали успеха или неудачи), вы можете дополнить перечисление переменными только для чтения. 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)