Let's Swift 2022 워크샵 402C 영상을 참고하여 제작했습니다.
- 기본적인 프로젝트 셋팅입니다.
SwiftUI
와 MVVM 패턴으로 기본적인feature
를 구성합니다.
SearchStore
를 만들어View
와 연결합니다.@BindingState
와BindableAction
/BindingAction
을 사용하여 양방향 데이터 바인딩을 구현합니다..continuousClock
을 활용하여 바인딩된keyword
에debounce
를 추가합니다.search
action 횟수를requestCount
에 표출합니다.- 테스트 코드에
TestClock
을 추가하여debounce
를 구현합니다.
- 네트워킹을 위한
SearchClient
를 만들어SearchStore
에 주입합니다. SearchStore
에서 API를 fetch하여succss
와failure
케이스를 작성합니다.- 받아 온 데이터를 화면에 노출합니다.
- 테스트 코드를 위한 mock을
SearchClient
와SearchEntity
에 작성합니다. - 위의 내용을 테스트 코드로 작성합니다.
- 현재 키워드와 이전 키워드를 화면에 띄우기 위해
seach
action이 실행될 때Effect.concatenate()
를 사용하여 두 개의 Effect를 합칩니다. - 위의 내용을 테스트 코드로 작성합니다.