VCR
示例
要运行示例项目,首先克隆仓库,并在Examples目录中首先运行pod install
。
要求
安装
VCR可以通过CocoaPods获取。要安装它,只需将以下行添加到您的Podfile中。
pod 'VCR'
为了保存磁带,您需要在方案中定义VCR_DIR
。它应该指向您希望存储磁带的目录。我们通常使用这个
名称 | 值 |
---|---|
VCR_DIR |
$(SOURCE_ROOT)/$(PROJECT_NAME)Tests/VCRTapes |
使用说明
录制
let session = VCRSession()
session.insertTape("example", record: true)
将名为 example.json
的 json 文件放置到 VCR_DIR
(上面定义)中。
多个请求
您可以通过插入额外的磁带来在给定的会话中录制多个请求。 VCRSession
将为每个插入的磁带写入一个 json 文件。
对于任何额外的请求,它将回退到实际的 URLSession
请求。
回放
let session = VCRSession()
session.insertTape("example")
这将读取 VCR_DIR
中的文件 example.json
并在发送请求时返回它。
依赖注入
VCRSession
是 URLSession
的一个实例,因此它可以注入到任何使用它的类中。例如,有一个 http 客户端
class HTTPClient {
let session: URLSession
init(session: URLSession = URLSession.shared) {
self.session = session
}
func request(_ request: URLRequest, completion: @escaping (Bool) -> Void) {
let task = self.session.dataTask(with: request) { (data, response, error) in
completion(true)
}
task.resume()
}
}
您可以将 VCRSession
注入默认的
let session = VCRSession()
session.insertTape("example")
let client = HTTPClient(session: session)
作者
Aaron Sapp,[email protected]
许可证
VCR的可获得许可为MIT许可证。更多信息请参见LICENSE文件。