尝试编译一个测试用例,其中XCTAssertNoThrow
在闭包中使用而没有运气。为什么这么僵硬,重新抛出或发生了什么?
let e = expectation(description: "Wait")
distillery.produce(request: Request(bottles: 1337)) { (result) in // error
XCTAssertNoThrow(try result.unwrap())
e.fulfill()
}
Xcode在编译期间抛出错误:
投掷类型'(_)抛出函数的转换无效 - > ()' 到非投掷功能类型'(结果) - >空隙'
ps:这似乎是Swift中的一个错误,我认为https://bugs.swift.org/browse/SR-487
答案 0 :(得分:3)
通过将XCTAssertNoThrow
包装到辅助函数
func assertOk<T>(_ result: Result<T>, file: StaticString = #file, line: UInt = #line) {
XCTAssertNoThrow(try result.unwrap(), file: file, line: line)
}