Bruynet 是一个使用 Combine 框架在 Swift 中实现的网络层。
我们有一个名为 'Calling' 的协议,它有一个函数负责请求并返回其结果。
public protocol Calling {
func call<T: Decodable>(type: T.Type, endpoint: Endpoint) -> AnyPublisher<T, Error>
}
您可以创建一个符合 'Calling' 协议的 mock 结构体,以便编写测试用例。
Bruynet 是一个符合 'Calling' 协议的结构体。 我应该说它是这个 Swift Package 的核心。
端点是一个结构体,它包含你的请求路径、HTTP Body 对象(作为 Data)和 HttpMethod (get, post 等)。
你可以通过第一个初始化器创建 get 请求。
init(path: String, httpMethod: HTTPMethod = .get)
如果你想创建一个带有 httpBody 的 post 请求,你必须使用第二个初始化器。
init<C>(path: String, body: C? = nil, httpMethod: HTTPMethod = .post) where C: Encodable
BaseURL 是你后端的基本字符串常量。 你可以在应用程序开始时赋值。
URLSession.shared.baseURL = ""
Requestable 是一个协议,它有一个名为 'networkProtocol' 的属性,类型为 'Calling'。 你需要创建一个符合 'Requestable' 协议的结构体,并添加你自己的特定于后端的函数。
public struct MemberRequest: Requestable {
public var networkProtocol: Calling
public init(networkProtocol: Calling = Bruynet()) {
self.networkProtocol = networkProtocol
}
}
如果你想使用这个结构体来编写测试,你可以创建一个符合 'Calling' 的结构体,然后使用该结构体创建 'MemberRequest'。 这样你就可以使用你自己的 mock 数据。
你可以通过 SPM 轻松地将这个包添加到你的项目中。
File -> Swift Packages -> Add Package Dependency
然后在庞大的列表中找到 'Bruynet',并将其添加到你的项目中。
我建议你使用最新版本。
Barış UYAR – @prospectcha – baris.uyar@hotmail.com