覆盖isReachable不适用于mock

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

我想测试我的代码和行为。在这种情况下,我重写了Alamofire的NetworkReachabilityManager和open var isReachable。在我的测试用例中,将调用NetworkReachabilityManager的isReachable方法,但不会调用MockNetworkReachabilityManager。

func testIsReachable() {
    let mockNetworkReachabilityManager = MockNetworkReachabilityManager()
    XCTAssertFalse(mockNetworkReachabilityManager!.isReachable)
}

class MockNetworkReachabilityManager: NetworkReachabilityManager {
    override var isReachable: Bool {
        return false
    }
}
swift alamofire
1个回答
0
投票

如果你使用协议并覆盖isReachable方法,最好的解决方案是。然后我可以写一个`MockNetworkReachabilityManager``

protocol CustomNetworkReachability {
  var isReachable: Bool { get }
}

extension NetworkReachabilityManager: CustomNetworkReachability {}

class MockNetworkReachabilityManager: CustomNetworkReachability {
  var isReachable: Bool {
    return false
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.