BarricadeKit
BarricadeKit 是对 MMBarricade 的 Swift 重写。功能集和 API 现在相似,但未来的更新将针对 BarricadeKit 而不是 MMBarricade。
为什么选择 Barricade?
BarricadeKit 是一个框架,用于为 iOS 应用设置运行时可配置的本地服务器。这是通过创建一个 NSURLProtocol "barricade" 来实现的,该协议拦截出站网络流量并将其重定向到自定义本地响应,而无需更改现有网络代码。
大多数其他本地服务器实现只支持每个请求一个响应,但 Barricade 支持每个请求多个响应。这允许在运行时展示界面以选择将返回哪个响应。能够在无需重新构建应用的情况下测试多个网络路径,可以节省大量的时间。
何时使用
在 开发 过程中,barricade 在构建过程中,无需频繁调整实时服务器状态的情况下,可以轻松地测试所有功能边缘情况。
对于 单元测试和集成测试,Barricade 允许你轻松地切换每个预定义的响应,以便测试可以充分覆盖边界情况。
同样地,对于类似的 UI测试,例如 KIF,也可以程序化地更新选定的响应,这允许你的测试套件覆盖故障场景以及“幸福路径”。
安装 BarricadeKit
安装 BarricadeKit 最简单的方法是通过 CocoaPods
pod 'BarricadeKit', '~> 2.0.0'
选择接口
BarricadeKit 配置了一个可以显示的界面,以便在运行时选择网络响应。
你可以采用以下两种方法之一来显示选择UI
- 当设备摇晃时自动显示界面。为此,只需将你的
UIWindow
替换为BarricadeShakeWindow
的实例。如果你在使用 storyboards,请覆盖应用程序委托中的- window
lazy var window: UIWindow? = {
return BarricadeShakeWindow(frame: UIScreen.main.bounds)
}()
注意:默认情况下,摇晃窗口仅用于调试构建。你可以手动设置 BarricadeShakeWindow.isEnabled
来调整此行为。
- 你可以在应用程序中的任何时间手动显示
BarricadeViewController
,只需确保将其限制在调试构建中,除非你想将其发送到 App Store。
App Store 上传
BarricadeKit 可以安全地包含在 App Store 构建(并且可以用于支持像您的应用程序的演示模式这样的功能),但大多数时候你可能希望确保在 App Store 构建中禁用 barricade。以下是一些方法:
按条件启用
在你的应用程序中,你可以使用宏将 barricade 的创建包装起来,以将代码执行限制在特定的构建配置上。例如
#if DEBUG
Barricade.enableForDefaultSession()
#endif
通过 CocoaPods 禁用
通过 CocoaPods 安装时,你可以指定特定的构建配置来限制库的安装。例如
pod 'BarricadeKit', '~> 2.0.0', :configurations => ['Debug']
或者,如果你只是利用库进行单元测试,你可能只想将库与你的测试目标链接
target 'Tests', :exclusive => true do
pod 'BarricadeKit', '~> 2.0.0'
end
许可证
BarricadeKit 在 MIT 许可证下提供。有关更多信息,请参阅 LICENSE 文件。