
이제 마지막으로 테스트 코드를 작성해 본다. moya 에서 제공하는 customEndpointClosure를 쓰면 별다른 조건 없이 샘플 데이터가 들어오는 것 처럼 동작 시킬 수 있다. func testExample() throws { let disposeBag = DisposeBag() //async 테스트를 위해 expectation 작성 let expectation = XCTestExpectation() //moya에서 제공해주는 라이브러리로 실제 서버가 아닌 커스텀 엔드포인트를 만드는 과정이다. let customEndpointClosure = { (target: JokeAPI) -> Endpoint in return Endpoint(url: URL(target: target).absoluteSt..

일단 해당 API를 Xcdoe에 작성하면 아래와 같은 에러가 발생한다. 022-08-17 00:43:36.034931+0900 moya[11437:77410] ATS failed system trust 2022-08-17 00:43:36.035073+0900 moya[11437:77410] Connection 1: system TLS Trust evaluation failed(-9802) 2022-08-17 00:43:36.035366+0900 moya[11437:77410] Connection 1: TLS Trust encountered error 3:-9802 2022-08-17 00:43:36.035487+0900 moya[11437:77410] Connection 1: encountered err..

1. 우선 SPM 에서 Moya 를 추가해준다. 지금은 Rx랑 Moya 정도를 쓸 거 같아 두 개를 체크 하였다. 2. POSTMAN 으로 사용할 API 를 점검 해본다. 이번에 사용할 API는 api.cndb.com 에서 제공하는 조크를 랜덤으로 응답해 주는 API 다. 3. Data 형태와 Request 형태를 코드로 작성 한다. (사이트를 뒤져서 가져온 다음 몇 몇 줄을 수정 하였다.) //jokeData.swift import Foundation struct Joke: Decodable { var type: String var value: Value struct Value: Decodable { var id: Int var joke: String var categories : [String] } ..
두 가지 방법이 있는데, 첫 번째는 swift 에서 제공하는 await, async 를 사용한다. 아래의 예시를 보면 함수에 async 로 작성하고 함수에 await로 작성하였다. func testDownloadWebDataWithConcurrency() async throws { // Create a URL for a webpage to download. let url = URL(string: "https://apple.com")! // Use an asynchronous function to download the webpage. let dataAndResponse: (data: Data, response: URLResponse) = try await URLSession.shared.data(from..
애플이 제공하는 설정으로의 이동은 인앱 설정 정도 밖에 없다. 혹시라도 Settings 메인화면으로 가는 거라면, 폰이 제공하는 시스템 팝업을 이용한 경우 라고 보면 될 것 이다. 1. 가능한 한 많은 사람들이 설정 영역으로 이동하지 않고 작업별 옵션을 수정할 수 있도록 합니다. 설정 까지 이동하지 말고, 해당 페이지에서 제공하는 것울 우선함 2.필요한 경우 앱 수준 옵션을 별도의 설정 영역에 넣습니다. 앱의 설정 영역에서 제공 하는 것을 권장함. 사용자들은 인앱 설정으로 잘 이동하지 않음 3. 제공하는 설정의 수를 최소화합니다 설정이 너무 많으면 앱에 대한 접근성이 떨어지고 특정 설정을 찾기가 어려워질 수 있습니다. 4. 사람들의 시스템 전체 설정을 존중하고 앱별 설정 영역에 중복 버전을 포함하지 마십..

테스트 함수에서 제공하는 스크린샷 기능을 사용해 본다. 최종 목적지는 버튼을 눌렀을 때, 나오는 화면을 캡쳐해서 폴더에 저장 하는 것이다. (나중에 slack 같은 곳에 업로드도 가능할 거 같다.) 1. 먼저 버튼 을 클릭하면 나오는 화면을 캡쳐하는 테스트 코드를 작성한다. 코드는 앱을 런칭하고 버튼을 누르면 약간의 딜레이 후에 스크린샷을 찍고, 어테치먼트에 추가하는 코드이다. func testButtonClickEventResult() throws { //given app.launch() //when app.buttons["Button"].tap() //then sleep(10) let screenshot = XCUIScreen.main.screenshot() let attachment = XCTAtt..

보통 iphone se (1st) 가 가장 가혹한 UI환경 이므로 해당 기기에서 테스트 되도록 해야하고, 자동으로 빌드와 동시에 테스트 되도록 하는 스크립트를 가져와서 내 프로젝트에 맞게 수정한다. (자료를 포스팅 해준 뱅크샐러드에게 무한 감사) 1. 시뮬레이터 를 가져오는 스크립트 getSimulatorMatchingCondition.rb require "json" deviceName = ARGV[0] runTime = ARGV[1] json = JSON.parse(%x(xcrun simctl list 'devices' -j)) devices = json["devices"]["com.apple.CoreSimulator.SimRuntime.iOS-#{runTime}"] if devices == nil p..

xcode가 업데이트 되면서 iphone se (1st) 시뮬레이터를 자동으로 넣어 주지 않는다. iphone se (1st) 가 가장 작은 폰이라 무조건 테스트를 해야 하는 빈번하게 사용하는 시뮬레이터라서 수동으로 넣는 법을 작성해 둔다. 1. xcode 상단 메뉴 중 window -> Device and Simulator 로 이동 2. 좌측 하단의 + 버튼을 눌러서 iphone se (1st) 를 추가 한다. 화면 중간에도 +가 있는데 전체 창의 좌측 하단 이다. 선택하고 create 누르면 이제 시뮬레이터 리스트에 보여진다. 2022.07.28 - [iOS/Test] - 스크립트로 빌드와 테스트 동시에 하기( iphone se 1st)
- Total
- Today
- Yesterday
- swift
- xcode whitespace trim option
- 모듏화
- AWS IoT
- jenkins
- Default Rules
- AppThinning
- RxSwift
- geohash
- MQTT
- ATS failed system trust
- 프로그래머스
- Fastlane
- 같이쓰기
- swiftLint
- chatgpt 4o
- bitrise
- firebase
- ChatGPT
- IF (KAKAO) DEV 2022
- ios
- CI/CD
- GCD
- XCTestExpectation
- 코테
- 무료는 아니지만
- async
- GPT4
- 빌드자동화
- Moya
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |