Ios 无法转换类型为';MockURLSession';到预期的参数类型';模拟会话&x27;错误

Ios 无法转换类型为';MockURLSession';到预期的参数类型';模拟会话&x27;错误,ios,swift,mocking,xctest,urlsession,Ios,Swift,Mocking,Xctest,Urlsession,我有一个函数,我正试图通过注入一个mockURLSession作为参数来进行单元测试: internal func getConnection(urlRequest: Request, mockUrlSession: MockURLSession?) { if mockUrlSession == nil { let dataTask = self.urlSession.dataTask(with: urlRequest as URLRequest) d

我有一个函数,我正试图通过注入一个mockURLSession作为参数来进行单元测试:

internal func getConnection(urlRequest: Request, mockUrlSession: MockURLSession?) {

    if mockUrlSession == nil {
        let dataTask = self.urlSession.dataTask(with: urlRequest as URLRequest)
         dataTask.resume()
    } else {

        let dataTask = mockUrlSession.dataTask(with: urlRequest, completionHandler: { (data, response, error) in

        })

        dataTask.resume()
    }
但当我尝试对其进行单元测试时,我得到了一个错误:

无法将“MockURLSession”类型的值转换为预期参数 键入“MockURLSession?”

这是单元测试:

 func test_urlSession404(){
        let mockResponse = HTTPURLResponse(url: (self.urlRequest?.url!)!, statusCode: 404, httpVersion: "HTTP/1.1", headerFields: nil)!
        var mockSession = MockURLSession(mockResponse: mockResponse)
        sut?.getConnection(urlRequest: self.urlRequest!, mockUrlSession: mockSession)//error here
    }

即使我没有将MockURLSession参数设置为可选,错误仍然会出现,减去?在会话结束时。我很困惑,因为它们是同一类型的,为什么它不能转换,有没有办法让它可以注入mockURLSession?

你有没有可能在不同的模块中定义了两次
mockURLSession
?@daltonclaybrook我想可能就是这样。