DVR 2.0.0

DVR 2.0.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2019年7月
SPM支持SPM

Eli PerkinsCarl Hill-PopperSam SoffesMark AdamsDane MiluskiFernando Paredes维护。



DVR 2.0.0

  • Venmo

DVR

Version Status Swift Version Carthage compatible Swift Package Manager

DVR是一个简单的Swift框架,它基于VCR为iOS、watchOS和OS X创建假的NSURLSession请求。

易用的依赖注入是主要的设计目标。API与NSURLSession相同。DVR.SessionNSURLSession的子类,因此您可以在任何地方将其用作直接替换。(目前仅支持数据任务。)

用法

let session = Session(cassetteName: "example")
let task = session.dataTask(with: request) { data, response, error in
    // Do something with the response
}

// Nothing happens until you call `resume` as you'd expect.
task.resume()

这将回放example磁带。完成处理程序与通常的方式完全相同。在此示例中,DVR将在您的测试包中查找名为example.json的磁带。

如果请求的记录缺失,它将记录并保存到磁盘上。保存到磁盘后,它将用记录文件的路径进行断言。这会导致测试停止,以便您可以向测试目标添加磁带并重新运行测试。

记录多个请求

默认情况下,DVR会话仅记录一个请求。如果通知DVR何时开始和停止记录,您可以在同一个磁带上记录多个请求。

let session = Session(cassetteName: "multiple")

// Begin recording multiple requests
session.beginRecording()

session.dataTask(with: URLRequest(url: URL(string: "http://apple.com")!)) { data, response, error in
    // Do something with the response

    session.dataTask(with: URLRequest(url: URL(string: "http://google.com")!)) { data, response, error in
        // Do something with the response
    }.resume()

    // Finish recording multiple requests
    session.endRecording() {
        // All requests have completed
    }
}.resume()

如果在调用会话的第一次请求中未调用beginRecordingendRecording,DVR将为您调用这些。在您将所有请求提交给会话后,可以立即调用endRecording。当所有请求都完成后,将调用endRecording接受的可选完成块。这是一个满足您设置的XCTest期望或在网络请求结束后完成其他事物的良好位置。