100% 纯 Swift 库,用于桩(stub)网络请求。
100% 纯 Swift 意味着:
.package(url: "https://github.com/417-72KI/StubNetworkKit.git", from: "0.5.0"),
警告
由于依赖关系,watchOS
在 CocoaPods 中不受支持。
如果您想使用包括 watchOS
在内的功能,请考虑迁移到 Swift Package Manager。
pod 'StubNetworkKit'
纯 Swift 不支持方法调配(method-swizzling),因此您必须显式启用桩(stub)功能。
如果您仅使用 URLSession.shared
,您可以调用 registerStubForSharedSession()
来启用桩(stub)功能。
否则,您应该注入已注册桩(stub)功能的 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(Data("Hello world!".utf8))
stub()
.scheme("https")
.host("foo")
.path("/bar")
.method(.get)
.responseJson(["message": "Hello world!"])
如果您正在寻找更多示例,请查看 StubNetworkKitTests。