🐷
[iOS]シミュレータでネットワークオフの時の挙動を再現する
備忘録用。
UIテスト時にネットワークオフの時の挙動を再現する必要があった。
シミュレータからコントロールセンタを触ることができないので、Xcodeのツールを使うかネットワークをモッキングする事でのみ再現が可能。
Xcodeのツールを使うとCIでのテスト実行の難易度が上がりそうだったので、今回はOHHTTPStubsを使って対応した。
import OHHTTPStubs
import OHHTTPStubsSwift
private weak var disableNetworkConnectionStub: HTTPStubsDescriptor?
protocol PageObject: AnyObject {}
extension PageObject {
private static var allways: HTTPStubsTestBlock {
isScheme("https") || isScheme("http")
}
func disableNetworkConnection(given condition: @escaping HTTPStubsTestBlock = allways) {
disableNetworkConnectionStub = stub(condition: condition) { _ in
let notConnectedError = NSError(domain: NSURLErrorDomain, code: URLError.notConnectedToInternet.rawValue)
return .init(error: notConnectedError)
}
}
func enableNetworkConnection() {
guard let stub = disableNetworkConnectionStub else { return }
HTTPStubs.removeStub(stub)
}
}
Discussion