xcode - How to unit test throwing functions in Swift? -
how test wether function in swift 2.0 throws or not? how assert correct errortype
thrown?
here's swift 3
version of fyodor volchyok's answer used xctassertthrowserror
:
enum myerror: error { case someexpectederror case someunexpectederror } func functionthatthrows() throws { throw myerror.someexpectederror } xctassertthrowserror(try functionthatthrows()) { error in xctassertequal(error as? myerror, myerror.someexpectederror) }
also, if error
enum has associated values, note have use if case
statement (or make enum conform equatable
unnecessary code write):
enum myerror: error { case someexpectederror case someunexpectederror case associatedvalueerror(value: int) } func functionthatthrows() throws { throw myerror.associatedvalueerror(10) } xctassertthrowserror(try functionthatthrows()) { error in guard case myerror.associatedvalueerror(let value) = error else { return xctfail() } xctassertequal(value, 10) }
Comments
Post a Comment