无法将'(Data?) - >()'类型的值转换为预期的参数类型'(_) - >()'

问题描述 投票:0回答:1

我创建了一个从网络服务器检索json数据的函数。它在生产环境中运行时可以正常工作,但是当设置为单元测试时,错误:Cannot convert value of type '(Data?) -> ()' to expected argument type '(_) -> ()'。这是功能:

func getJSONData <T : Codable> (url: ServerUrl, type: T.Type, completionHandler:@escaping (_ details: T) -> ())  {

    guard let url = URL(string: baseURL + url.rawValue) else { return }


    session.dataTask(with: url, completionHandler: {
        (data, response, err) in

        guard err == nil else {
        print("There was a network error:", err as Any)
        return
        }
        guard let data = data else { return }

        do {

            let updatedModels = try JSONDecoder().decode(T.self, from: data)
            completionHandler(updatedModels)

        } catch let jsonErr {
            print("Error serializing json:", jsonErr)
            return }

        }).resume()
}

这是单元测试:

func test_getJSONData_should_return_data() {

var actualData: Data?

sut.getJSONData(url: ServerUrl.colors, type: MainColor.self, completionHandler: { (data) in //error here

    actualData = data

})
XCTAssertNotNil(actualData)

}

ios swift unit-testing
1个回答
0
投票

问题是,完成返回类型MainColor而不是Data的值,这应该是

var actualData: MainColor?
© www.soinside.com 2019 - 2024. All rights reserved.