1
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.

在这样的匹配闭包中,我将如何指示成功或失败?还有比这更短或更简洁的方法来提取有关枚举大小写匹配的布尔信息吗?

if case PizzaOrderError.unexpectedAnswer(_) = error {
    return true
} else {
    return false
}
4

0 回答 0