Как создать сетевой уровень, подходящий для тестирования с использованием Alamofire и Dependency Injection? - PullRequest
0 голосов
/ 12 сентября 2018

Итак, я пытался создать сетевой уровень, который можно было бы легко использовать, поддерживать и тестировать.Я решил пойти с Alamofire, поскольку он действительно прост в использовании и обслуживании (особенно при использовании Routing).

Но я застрял в тестовой части.И вот почему: как я могу ввести URL базового API в маршрутизатор?Должен ли я использовать что-то еще вместо шаблона маршрутизации?

Ниже я оставлю диаграмму UML и части кода.UML diagram

public protocol Router: URLRequestConvertible {
    var path: String { get }
    var method: HTTPMethod { get }
    var parameters: Parameters { get }
}

// this extension will provide a default implementation
// of the asURLRequest function
extension Router {
    public func asURLRequest() throws -> URLRequest {
        // my problem begins here, since I am using
        // a static/global reference for the base url
        let url = try BASE_URL.asURL()
        let request = try URLRequest(url: url.appendingPathComponent(path), method: method)
        guard !parameters.isEmpty else { return request }

        return try JSONEncoding.default.encode(request, with: parameters)
    }
}

Большое спасибо за ваше время и помощь.

...