func orderPizza() throws
enum PizzaOrderError: Error {
case pizzaServiceNotAnsweringPhone
case unexpectedAnswer(String)
}
// Test that orderPizza throws any PizzaOrderError
expect { try orderPizza() }.to(throwError(errorType: PizzaOrderError.self))
// Test that orderPizza throws a .pizzaServiceNotAnsweringPhone error
expect { try orderPizza() }
.to(throwError(PizzaOrderError.pizzaServiceNotAnsweringPhone))
Учитывая вышеупомянутый интерфейс, как я могу выполнить модульное тестирование, чтобы orderPizza () генерировал любой PizzaOrderError.unexpectedAnswer без проверки строки?
Что-то вроде соответствия throwError(PizzaOrderError.unexpectedAnswer)
не представляется возможным, поскольку компилятор всегда ожидает, что конкретный аргумент String будет предоставлен с ошибкой ссылки.
Nimble имеет способ обеспечить замыкание для выполнения «произвольного пользовательского сопоставления».Я не смог найти каких-либо примеров того, как это должно работать, и я немного запутался, когда возвращаемым типом этого замыкания является Void
.Я бы ожидал что-то вроде Bool
.
Как бы я обозначил успех или неудачу в таком подходящем закрытии?И есть ли какой-нибудь более короткий или более чистый способ извлечь логическую информацию о совпадении регистра enum, чем этот?
if case PizzaOrderError.unexpectedAnswer(_) = error {
return true
} else {
return false
}