Update swift.yml
HTTPMock은 HTTP 호출 시 가짜 데이터를 다운로드받을 수 있도록 해주는 라이브러리입니다. 네트워크 호출이 필요한 앱을 서버 없이 유닛 테스트할 때 유용하게 쓸 수 있습니다.
HTTPMock
URLSession 사용 시 stub된 데이터를 받을 수 있도록 하기 위해서는 URLSessionConfiguration.protocolClasses에 custom class를 등록해야 합니다. 등록하는 방법으로는 아래 세 가지가 있습니다.
URLSession
URLSessionConfiguration.protocolClasses
URLSessionConfiguration에 직접 등록하는 방법입니다.
URLSessionConfiguration
let configuration = URLSessionConfiguration.default URLProtocolService.registerStub(in: configuration) let session = URLSession(configuration: configuration) ...
URLSessionConfiguration 생성 시 자동으로 등록하고 싶다면 아래의 메소드를 사용합니다.
URLProtocolService.registerStubInDefaultConfiguration() let configuration = URLSessionConfiguration.default let session = URLSession(configuration: configuration) ...
URLSession은 생성 후 configuration 변경이 불가능합니다. 따라서 URLSession.shared를 사용한다면 아래의 메소드를 호출해야 합니다.
configuration
URLSession.shared
URLProtocolService.registerStubInSharedSession()
등록을 해제하고 싶다면 아래의 메소드를 사용합니다.
URLProtocolService.unregisterStub(from: configuration) URLProtocolService.unregisterStubFromDefaultConfiguration() URLProtocolService.unregisterStubFromEphemeralConfiguration() URLProtocolService.unregisterStubFromSharedSession()
let bundle = Bundle(for: type(of: self)) let responseFileURL = bundle.url(forResource: "items", withExtension: "json")! stub(when: .isHost("server.com"), then: .fileURL(responseFileURL)) // stub 시 다양한 설정 가능. ex) 2초 딜레이 후 1KB씩 전송 stub(when: .isHost("server.com") && .hasLastPathComponent("items.json"), then: .fileURL(responseFileURL) .settingResponseDelay(2.0) .settingPreferredBytesPerSecond(1_000))
순서 상관없이 위 두 작업을 한 후 URLSession.dataTask(with:)나 URLSession.downloadTask(with:)를 호출하면 stub된 데이터를 얻을 수 있습니다.
URLSession.dataTask(with:)
URLSession.downloadTask(with:)
.package(url: "https://github.com/nearfri/HTTPMock", from: "0.9.0")
©Copyright 2023 CCF 开源发展委员会 Powered by Trustie& IntelliDE 京ICP备13000930号
HTTPMock
HTTPMock
은 HTTP 호출 시 가짜 데이터를 다운로드받을 수 있도록 해주는 라이브러리입니다. 네트워크 호출이 필요한 앱을 서버 없이 유닛 테스트할 때 유용하게 쓸 수 있습니다.사용법
URLSessionConfiguration에 custom URLProtocol 등록
URLSession
사용 시 stub된 데이터를 받을 수 있도록 하기 위해서는URLSessionConfiguration.protocolClasses
에 custom class를 등록해야 합니다. 등록하는 방법으로는 아래 세 가지가 있습니다.URLSessionConfiguration
에 직접 등록하는 방법입니다.URLSessionConfiguration
생성 시 자동으로 등록하고 싶다면 아래의 메소드를 사용합니다.URLSession
은 생성 후configuration
변경이 불가능합니다. 따라서URLSession.shared
를 사용한다면 아래의 메소드를 호출해야 합니다.등록을 해제하고 싶다면 아래의 메소드를 사용합니다.
Stub 할 request와 response 설정
순서 상관없이 위 두 작업을 한 후
URLSession.dataTask(with:)
나URLSession.downloadTask(with:)
를 호출하면 stub된 데이터를 얻을 수 있습니다.설치
Swift Package Manager
제한사항