[swift] Quick/Nimble을 사용한 REST API 테스트 작성 방법

이번 포스트에서는 Swift 언어를 사용하여 REST API 테스트를 작성하는 방법에 대해 알아보겠습니다. 이를 위해 Quick 및 Nimble이라는 두 개의 유용한 라이브러리를 사용할 것입니다. 그럼 시작해보겠습니다.

의존성 설치

우선, 프로젝트에 Quick 및 Nimble 의존성을 추가해야 합니다. CocoaPods를 사용하는 경우, Podfile에 다음과 같이 추가합니다.

target 'YourProject' do
  use_frameworks!
  
  # Quick 및 Nimble 추가
  pod 'Quick'
  pod 'Nimble'
end

그리고 터미널에서 다음 명령을 실행하여 의존성을 설치합니다.

$ pod install

API 테스트 작성

API 테스트를 작성하기 위해 QuickSpec 클래스를 상속받은 테스트 케이스를 작성합니다. 다음은 간단한 예시입니다.

import Quick
import Nimble

class APITestSpec: QuickSpec {
  override func spec() {
    describe("API 테스트") {
      it("GET 요청 테스트") {
        // Given
        let url = URL(string: "http://example.com/api/users")!
        
        // When
        let request = try! URLRequest(url: url, method: .get)
        
        // Then
        expect(request.url).to(equal(url))
        expect(request.httpMethod).to(equal("GET"))
      }
      
      it("POST 요청 테스트") {
        // Given
        let url = URL(string: "http://example.com/api/users")!
        let parameters = ["name": "John", "age": 30]
        
        // When
        let request = try! URLRequest(url: url, method: .post, parameters: parameters)
        
        // Then
        expect(request.url).to(equal(url))
        expect(request.httpMethod).to(equal("POST"))
        expect(request.httpBody).toNot(beNil())
      }
    }
  }
}

위의 예시에서는 GET 및 POST 요청에 대한 테스트를 작성하였습니다. expect 함수는 테스트 결과를 검증하기 위해 사용되며, totoNot(beNil()) 같은 Nimble의 다양한 매처(matcher)를 사용할 수 있습니다.

테스트 실행

테스트를 실행하려면 테스트 파일을 포함한 모든 소스 파일을 빌드해야 합니다. 이후 테스트를 실행하는 방법은 다음과 같습니다.

  1. Xcode에서 Command + U를 눌러 테스트를 실행합니다.
  2. 터미널에서 프로젝트 디렉토리로 이동한 후 xcodebuild test 명령을 실행합니다.

둘 중 어떤 방법을 선택하더라도 테스트 결과가 성공적으로 출력될 것입니다.

결론

이번 포스트에서는 Swift에서 Quick과 Nimble을 사용하여 REST API 테스트를 작성하는 방법을 알아보았습니다. Quick과 Nimble은 테스트를 작성하고 검증하는 데 사용하기 편리한 도구입니다. API 테스트를 작성하고 싶은 개발자들에게 유용한 정보가 되었기를 바랍니다.

참고 자료