
이제 마지막으로 테스트 코드를 작성해 본다. 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..

테스트 함수에서 제공하는 스크린샷 기능을 사용해 본다. 최종 목적지는 버튼을 눌렀을 때, 나오는 화면을 캡쳐해서 폴더에 저장 하는 것이다. (나중에 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)

1. 설정 내비게이션 바에서 6번 째로 이동해서 UI Test target 추가해 준다. 2. 튜토리얼 확인 UIView 상의 Object에 접근하는 방법이 Xcode 와는 다르기 때문에 그 부분을 먼저 확인해야 한다. 그리고 사용자의 액션이 추가가 되면 그부분에 대한 명령 도 일아 야 한다. app.buttons["Button"].tap() 위와 같은 문구에 대해 설명하자면, app //app = XCUIApplication() 로 코드에서 할당하였다 app 앱의 buttons["Button"] //Button이라는 버튼을 tap() //탭 하라는 동작이다. 다 외울 수 없기 때문에 쉽게 확인 하는 방법이 있다. 소스코드 왼쪽 하단의 빨간색 녹화 버튼을 누르고 나서 시뮬레이터 안의 버튼을 선택하는 동작..
- Total
- Today
- Yesterday
- 코테
- Default Rules
- chatgpt 4o
- AppThinning
- ChatGPT
- 프로그래머스
- AWS IoT
- GPT4
- Fastlane
- ios
- ATS failed system trust
- swift
- GCD
- jenkins
- swiftLint
- async
- firebase
- Moya
- 모듏화
- xcode whitespace trim option
- IF (KAKAO) DEV 2022
- 빌드자동화
- XCTestExpectation
- geohash
- 같이쓰기
- CI/CD
- MQTT
- bitrise
- 무료는 아니지만
- RxSwift
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |