Быстрое перечисление + связанное значение + встроенная проверка регистра

У меня есть следующее быстрое перечисление для возврата асинхронного 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

person Sascha Held    schedule 09.02.2018    source источник


Ответы (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)
person iWheelBuy    schedule 09.02.2018