StubNetworkKit
100% 纯 Swift 网络请求数据包。
100% 纯 Swift 表示:
- 不再支持 Objective-C API
- 在其他平台(例如 Linux)上也可测试
安装
Swift 包管理器(推荐)
.package(url: "https://github.com/417-72KI/StubNetworkKit.git", from: "0.2.1"),
CocoaPods
pod 'StubNetworkKit'
准备
纯 Swift 不支持 方法交换,因此您必须显式启用桩。
如果您仅使用 URLSession.shared
,则可以调用 registerStubForSharedSession()
来启用桩。
否则,您应该注入已注册桩的 URLSessionConfiguration
实例。
有关使用 Alamofire
或 APIKit
的示例代码,请参阅 示例。
示例
基本
stub(Scheme.is("https") && Host.is("foo") && Path.is("/bar"))
.responseJson(["message": "Hello world!"])
通过请求中的条件分支来切换响应。
stub(Scheme.is("https") && Host.is("foo") && Path.is("/bar")) { request in
guard request.url?.query == "q=1" else {
return .error(.unexpectedRequest($0))
}
return .json(["message": "Hello world!"])
}
使用结果构建器
stub {
Scheme.is("https")
Host.is("foo")
Path.is("/bar")
Method.isGet()
}.responseJson(["message": "Hello world!"])
通过请求中的条件分支来切换响应。
stub {
Scheme.is("https")
Host.is("foo")
Path.is("/bar")
Method.isGet()
} withResponse: { request in
guard request.url?.query == "q=1" else {
return .error(.unexpectedRequest($0))
}
return .json(["message": "Hello world!"])
}
stub(url: "foo://bar/baz", method: .get)
.responseData("Hello world!".data(using: .utf8)!)
函数链
stub()
.scheme("https")
.host("foo")
.path("/bar")
.method(.get)
.responseJson(["message": "Hello world!"])
更多示例
如果您需要更多示例,请参阅 StubNetworkKitTests。