Swift 4.2: как передать больше параметров в errorHandler в XCTAssertThrowsError - PullRequest
0 голосов
/ 19 сентября 2019

Я хотел бы передать больше аргументов в аргумент 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, чтобы я мог передать больше аргументов?

...