Я хотел бы передать больше аргументов в аргумент XCTAssertThrowsError errorHandler
.
public ErrorFoo : Error {
case BarCase(args: [String:String])
}
public class Foo() {
public init (fooBar: String) throws {
throw ErrorFoo.BarCase(args: ['fooBar': fooBar])
}
}
class TestClassFoo: XCTestCase {
private let assertProperValidation : (Error) -> Void = {
(error) in
XCTAssertEqual(error as? ErrorFoo, nil)
}
func testFoo() {
let fooString = ""
XCTAssertThrowsError(try Foo(fooBar: fooString),
"message",
errorHandler: assertProperValidation )
}
}
Я хотел бы изменить assertProperValidation
на
private let assertProperValidation : (Error, [String: String]) -> Void = {
(error, args) in
XCTAssertEqual(error as? ErrorFoo, ErrorFoo.BarCase(args))
}
и изменить аргумент errorHandler для XCTAssertThrowsError
: errorHandler: (Error) -> Void
на errorHandler: (Error, [String: String]) -> Void
.
См.
XCTAssertThrowsError(expression: T, message: String, errorHandler: (Error) -> Void)
https://developer.apple.com/documentation/xctest/1500795-xctassertthrowserror?changes=latest_minor.
Меня убеждают, что я могу перегрузить XCTAssertThrowsError, но переход к его определению приводит к пустому файлу.Что я могу сделать с XCTAssertThrowsError
, XCTestCase
или errorHandler
, чтобы я мог передать больше аргументов?