【问题标题】:Environment Configuration for DEV and TEST for Swift ProjectSwift 项目的 DEV 和 TEST 环境配置
【发布时间】:2022-08-14 22:31:58
【问题描述】:

我正在为应用程序编写测试,并且必须在 Web 服务中调用 URL。对于测试,我希望 URL 切换到测试 URL 而不是开发 URL。从我的测试目标中,我发送了一个环境变量,并基于它返回了正确的 URL。但正如您所见,它会产生大量代码,而且我还有很多其他网址。

我怎样才能使它无缝且易于配置。在测试环境中,与开发环境相比,我想返回不同的 url。

struct URLConfigurations {
    
    static var loginURL: URL {
        
        // get the environment
        let environment = ProcessInfo.processInfo.environment[\"ENV\"]
        
        if let environment {
            if environment == \"TEST\" {
                return URL(string: \"someURL.com/api/test/login\")!
            } else {
                return URL(string: \"someURL.com/api/dev/login\")!
            }
        } else {
            return URL(string: \"someURL.com/api/dev/login\")!
        }
    }
}

    标签: ios swift


    【解决方案1】:

    如果您测试 URL 与其他 URL 具有相同的路径,只是域不同,您可以创建一个网络服务,在其构造函数中接受 baseURL,然后创建一个只接受其余路径的通用函数。然后您可以将 baseURL 作为 ENV 变量传递,而不必在任何地方输入它

    我的一个应用程序中的粗略示例,删除了自定义内容:

    class NetworkService {
        public let baseURL: URL
    
        public init(withBaseURL baseURL: URL) {
            self.baseURL = baseURL
        }
        
        public func request<T: Decodable>(path: String, isPOST: Bool, withBody body: Data?, forReturnType: T.Type, completion: @escaping ((Result<T, Error>) -> Void)) {
            var fullURL = self.baseURL
            fullURL.appendingPathComponent(path)
            
           // Perform request, decode and call completion
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-07
      • 2020-08-26
      • 2017-09-25
      • 1970-01-01
      • 2020-01-04
      • 2013-11-10
      • 2020-11-30
      • 1970-01-01
      相关资源
      最近更新 更多