[swift] Swift Moya에서 모의 데이터로 개발하기

Swift Moya는 네트워크 요청을 쉽게 처리하기 위한 라이브러리입니다. 일반적으로 서버와 통신하여 실제 데이터를 받아오지만, 개발 과정에서는 실제 서버에 의존하지 않고 모의 데이터로 개발하고 싶을 수 있습니다. 이번 블로그 포스트에서는 Swift Moya에서 모의 데이터를 사용하여 개발하는 방법을 알아보겠습니다.

1. 모의 데이터 종류 선택

Swift Moya는 모의 데이터를 생성하기 위해 MoyaProvider 프로토콜을 사용합니다. Stub 기능을 활용하여 특정 엔드포인트에 대해 모의 응답 데이터를 생성할 수 있습니다.

2. Stub 구현하기

import Moya

struct MyService: TargetType {
    var baseURL: URL {
        return URL(string: "https://api.example.com")!
    }
    var path: String {
        return "/users"
    }
    var method: Moya.Method {
        return .get
    }
    var sampleData: Data {
        let stubData = """
            [
                { "id": 1, "name": "John" },
                { "id": 2, "name": "Jane" },
                { "id": 3, "name": "Mike" }
            ]
            """
        return stubData.data(using: .utf8)!
    }
    var task: Task {
        return .requestPlain
    }
    var headers: [String : String]? {
        return ["Content-Type": "application/json"]
    }
}

let provider = MoyaProvider<MyService>(stubClosure: MoyaProvider.immediatelyStub)

위의 코드에서 MyServiceTargetType 프로토콜을 채택하여 엔드포인트에 대한 정보를 정의합니다. sampleData는 모의 응답 데이터를 반환하는 프로퍼티로, JSON 형식의 데이터를 반환하도록 설정하였습니다.

3. 모의 데이터로 개발하기

provider.request(.getUsers) { result in
    switch result {
    case .success(let response):
        do {
            let users = try response.map([User].self)
            print(users)
        } catch {
            print(error)
        }
    case .failure(let error):
        print(error)
    }
}

위의 코드는 provider를 통해 .getUsers 엔드포인트에 대한 요청을 보내고, 응답 데이터를 처리하는 부분입니다. response.map 메서드를 사용하여 응답 데이터를 User 형식으로 매핑합니다.

결론

Swift Moya를 사용하여 모의 데이터로 개발하는 방법을 알아보았습니다. 모의 데이터로 개발하면 실제 서버와의 의존성을 줄일 수 있어 개발 과정을 더욱 효율적으로 진행할 수 있습니다. 추가적으로 모의 데이터를 사용하여 테스트를 수행할 수도 있습니다.