Swift 具有泛型参数的函数快速单元测试

Swift 具有泛型参数的函数快速单元测试,swift,unit-testing,generics,xctest,xctestcase,Swift,Unit Testing,Generics,Xctest,Xctestcase,我有一个定义如下的函数: func parse<T: Mappable>(_ data: Data, _ completion: (Result<[T]>) -> Void) { completion(Result { do { let decodedData: Any = try decode(data) let checkedArray: [AnyObject] = try check(de

我有一个定义如下的函数:

func parse<T: Mappable>(_ data: Data, _ completion: (Result<[T]>) -> Void) {
    completion(Result {
        do {
            let decodedData: Any = try decode(data)
            let checkedArray: [AnyObject] = try check(decodedData)
            let models: [T] = mapToModels(checkedArray)
            return models
        } catch {
            throw error
        }
    })
}
如上所述,我得到的错误是无法推断通用参数“T”

此函数编译、构建并在其他情况下正常工作(当不是单元测试时)


知道如何测试吗?

错误说明无法推断完成处理程序中的
结果
参数的类型。这意味着您必须显式声明其类型:

func testInvalidData() {
    let test = "test"
    let invalidData = test.data(using: .utf8)

    parse(invalidData, { (result: Result<[DesiredTypeHere]>) in
    // ^Replace 'DesiredTypeHere' with expected type
        switch result {
        case .success(let users):
            XCTFail()
        case .failure(let error):
            XCTAssertNotNil(error)
        }
    })
}
func testInvalidData(){
let test=“test”
让invalidData=test.data(使用:.utf8)
在中解析(invalidData,{(result:result)
//^将“DesiredTypeHere”替换为所需类型
切换结果{
成功案例(让用户参与):
XCTFail()
案例。失败(let错误):
XCTASERTNOTNIL(错误)
}
})
}

不是
func parse(u-data:data,uu-completion:(Result)->Void){
此行导致任何错误?感谢您的及时回复,就是这样。我被直接指向
解析
函数的错误误导了,而不是块内的
结果
。是的,有时候Xcode的可视错误标志可能会误导。很高兴我能帮上忙!
func testInvalidData() {
    let test = "test"
    let invalidData = test.data(using: .utf8)

    parse(invalidData, { (result: Result<[DesiredTypeHere]>) in
    // ^Replace 'DesiredTypeHere' with expected type
        switch result {
        case .success(let users):
            XCTFail()
        case .failure(let error):
            XCTAssertNotNil(error)
        }
    })
}