Swift 3.0 XCTest.performTest(_:) #селектор

#selector #swift3

#селектор #swift3

Вопрос:

В Swift 2.3 [XCTest performTest:] был переведен на Swift как public func performTest(run: XCTestRun)

В Swift 3.0 это стало open func perform(_ run: XCTestRun)

С этим изменением я застрял, пытаясь получить селектор методов (даже следуя предложениям https://bugs.swift.org/browse/SR-1016 и https://bugs.swift.org/browse/SR-1033 ).

 #selector(XCTest.perform(_:)) -> matches NSObject's performSelector
#selector(XCTest.perform as (XCTestRun) -> Void) -> ambiguous reference to member 'perform'
#selector(XCTest.perform(_:) as (XCTestRun) -> Void) -> cannot convert value of type '(Selector!) -> Unmanaged<AnyObject>!' to type '(XCTestRun) -> Void' in coercion
  

Как мне performTest правильно получить селектор?

Ответ №1:

Увы, тип XCTest.perform(_:) curried , поэтому понадобится уродливый:

#selector(XCTest.perform(_:) as (XCTest) -> (XCTestRun) -> Void)