[swift] Swift Moya에서 테스트 코드 작성하기

Moya는 Swift로 작성된 네트워킹 라이브러리로서, 테스트 코드 작성을 통해 안정적인 앱 개발을 할 수 있습니다. 이번 글에서는 Moya를 사용하여 API 테스트 코드를 작성하는 방법에 대해 알아보겠습니다.

테스트 환경 설정

Moya를 사용하기 위해서는 XCTest 프레임워크가 필요합니다. 따라서, 프로젝트에 XCTest 타겟을 추가하고, 의존성으로 Moya를 추가해야 합니다. 이후 테스트 코드를 작성하기 위해 XCTestCase를 상속 받는 클래스를 생성합니다.

테스트 기본 구조

Moya를 사용하는 테스트 코드는 크게 3가지 단계로 구성됩니다.

  1. Target 생성: 실제 테스트할 Moya 타겟을 생성합니다.
  2. Stubbing: 테스트 도중 일부러 퍼블릭 API 호출을 가로채서 가짜 응답을 반환합니다.
  3. 테스트 메서드 작성: 실제 테스트를 작성하고 기대하는 결과를 확인합니다.

테스트 코드 작성 예시

import XCTest
import Moya
@testable import YourApp

class APIManagerTests: XCTestCase {
    
    // 테스트에 사용할 StubbedProvider 객체 생성
    let stubbedProvider = MoyaProvider<YourAPI>(stubClosure: MoyaProvider.immediatelyStub)

    func testAPIRequest() {
        // API 호출을 원하는 메서드 호출
        APIManager.makeAPIRequest(provider: stubbedProvider) { result in
            // 기대하는 결과를 확인하기 위한 assertion
            switch result {
            case .success(let response):
                XCTAssertEqual(response.statusCode, 200)
            case .failure(let error):
                XCTFail("API request failed with error: \(error.localizedDescription)")
            }
        }
    }
}

위의 코드는 YourApp에서 APIManager라는 클래스를 테스트하는 코드입니다. makeAPIRequest 메서드를 호출하고, 결과를 확인하는 단순한 테스트 예시입니다.

결과 확인

위의 코드를 테스트 실행하려면, Xcode에서 테스트 타겟을 선택하고 ‘Product’ 탭에서 ‘Test’를 실행하면 됩니다. 테스트가 성공한 경우, 전체 테스트 결과가 표시됩니다.

결론

이렇게 Moya를 사용하여 테스트 코드를 작성하면, 네트워크 요청을 안전하게 테스트하고 예상 결과를 확인할 수 있습니다. Moya 및 XCTest 프레임워크에 대한 자세한 내용은 공식 문서를 참고하시기 바랍니다.