샘플 프로젝트에 MVVM 적용하면서 ViewModel을 통해 비동기로 API 호출하는 로직을 unitTest 할 일이 있었는데, 처음에 이런식으로 api 호출 후에 성공하면 completionHandler 에서 isSuccess를 true로 바꿔주고 XCTAssertTrue에서 isSuccess가 true면 테스트가 성공하게 짰더니 completionHandler가 실행되기 전에 testLogin 메서드가 종료되어 버려서 테스트에 실패하더라구요. 찾아보니 애플 Developer 사이트에 위와같은 예제가 있던데 expectation을 이용해 지정한 시간만큼 대기하다가 시간안에 fulfill이 되면 다음 작업을 실행하고 fulfill이 되지 않으면 timeout되어 test 메서드가 실패한다고 되어있네요. ..
안녕하세요. 리더가 JWT 인증 관련 샘플 앱을 만들어보라고 해서 만드는 김에 블로그에 정리하려고 합니다. 처음에는 아래의 프로토콜에 포함된 adapt와 retry 메서드를 이용해 jwt 인증을 구현하려고 했습니다. protocol RequestInterceptor : RequestAdapter, RequestRetrier func adapt(_ urlRequest: URLRequest, for session: Alamofire.Session, completion: @escaping (Result) -> Void) func retry(_ request: Request, for session: Alamofire.Session, dueTo error: Error, completion: @escaping (R..
iOS 아키텍처 패턴, 디자인 패턴에 대해 알아보던 중 VIPER 패턴에 대해 공부할 일이 있어서 겸사겸사 블로그에 정리해보려고 합니다. Apple's MVC 좌측이 Classic MVC 우측이 apple's MVC인데, iOS 앱 개발 관점에서는 ViewController가 View의 LifeCycle과 깊게 연관되어 있어 View와 Controller의 책임을 나누기가 어렵습니다. 그래서 우측과 같은 애플만의 MVC 패턴이 나오게 되었는데 이 경우 ViewController의 사이즈가 너무 커져서 재사용성이 떨어지고 테스트 관점에서 볼 때도 모델이야 따로 떨어져 있으니 테스트가 된다고 쳐도 View와 Controller를 각각 따로 테스트하기가 어려워집니다. 익숙한 패턴이라 개발 속도도 빠르고 새로운..
- Total
- Today
- Yesterday
- 비동기 유닛테스트
- MVVM패턴
- SWIFT
- wrappedValue
- inputoutput패턴
- rxswift 없이
- @propertyWrapper
- 프로퍼티래퍼
- ios 디자인패턴
- swift 캐싱
- ios 캐시
- 앱개발 디자인패턴
- UserDefaultKey
- ios cache
- UserDefault
- ios 패턴
- 아키텍처패턴
- swift mvvm
- swift cache
- api호출 unittest
- ios memory
- ios image caching
- ios 캐시메모리
- ios 이미지캐싱
- ios expectation
- ios 유닛테스트
- 연산프로퍼티
- rxswift안쓰고
- UserDefaults
- NSCache
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |