StubNetworkKit 0.4.0

StubNetworkKit 0.4.0

417.72KI 维护。



StubNetworkKit

CI GitHub release CocoaPods Version CocoaPods Platform GitHub license

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 实例。

有关使用 AlamofireAPIKit 的示例代码,请参阅 示例

示例

基本

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