ios - 在 XCTestCase 期间切换互联网可用性

标签 ios swift xcode xctest xctestcase

在 XCTestCase 期间,我想以某种方式说“禁用互联网”,它就会被有效地禁用。然后我想以某种方式说“启用互联网”,它就会回来。关键是要看到我的应用程序在网络请求失败然后成功时表现正常。做这个的最好方式是什么?

打开和关闭飞行模式就足够了,但我不知道有什么方法可以做到这一点。我考虑过创建一个专用模拟器,该模拟器预先配置为禁用互联网,例如打开飞行模式,但这会限制我在一个预先配置的模拟器而不是模拟器(或设备)上运行此测试的能力)我的选择。

最佳答案

由于您直接使用 NSURLSession,因此侵入性最小的解决方案是劫持 HTTP 和 HTTPS 协议(protocol),以便您可以控制 URL 请求的成功和内容。

有一些库可以实现此目的,但许多库可能更注重控制响应内容,而不是通过不响应或延迟响应来完全屏蔽请求。

通常,如果您将网络推向您控制的协议(protocol)的另一端,您最终会得到更好的分解和更近、更简单的接缝 - 并且可以在测试时轻松提供不同的实现。

关于ios - 在 XCTestCase 期间切换互联网可用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43857585/

相关文章:

objective-c - drawAtPoint,需要说明

ios - 无法快速引用 Xcode GameScene.sks

swift - 在 Swift 中用字符替换字符串子范围并保持长度

iphone - infoDictionary 内部版本号与 Plist 不同步

iOS 增加 UITableViewCell 中 UIButton 的触摸区域

ios - 如何从 CTlineRef 中提取文本字符串?

ios - 如何使用 Alamofire 关闭证书验证?

iphone - Xcode5 和 iOS7 - 入门

ios - 隐藏在元素后面的 CollectionView 单元格

ios - 如何去除圆形矩形贝塞尔曲线路径的角点