플로우 테스트Flow를 반환하는 대부분의 함수는 Flow를 반환하는 다른 함수를 호출합니다.이는 데이터 → 도메인 레이어로 Flow 반환과 뷰 모델에서 UI 모델로의 전환에서도 적용됩니다.이러한 함수들을 어떻게 테스트하는지 직접 구현해봤습니다.비즈니스 로직테스트를 위한 로직을 구현하였습니다.ObserveAppointmentsService는 비즈니스 로직을 포함하고 있습니다.레퍼지토리 저장소로부터 Flow 데이터를 반환받아, 다양한 연산 후 재반환합니다.// Sealed Class 정의sealed class Appointment { data class AppointmentsUpdate(val appointments: List) : Appointment() data object Appointmen..
개요일반적으로 플로우는 콜드 데이터이기 때문에 요청할 때마다 값이 계산됩니다.여러 개의 수신자가 하나의 데이터가 변경되는지 감지하는 경우도 있습니다.이 경우 메일링 리스트와 비슷한 개념인 SharedFlow를 활용할 수 있습니다.StateFlow는 감지 가능한 값과 비슷하게 동작합니다.SharedFlow공유플로우를 통해 메시지를 보내면, 대기하고 있는 모든 코루틴이 수신하게 됩니다.이는 브로드캐스트 채널과 비슷하게 동작합니다.replay마지막으로 전송한 값들을 저장할 수를 지정합니다.(default:0)relayCache값을 저장한 캐시를 나타냅니다.resetReplayCache저장한 캐시를 초기화하는 경우 활용합니다.suspend fun main(): Unit = coroutineScope { /..
플로우 생명주기 함수플로우는 요청이 한쪽 방향으로 흐르고, 요청에 의해 생성된 값이 다른 방향으로 흐르는 파이프 형태입니다.플로우가 완료되거나 예외가 발생하면 값이나 예외 같은 특정 이벤트를 감지할 수 있습니다.이 때 onEach, onStart, onCompletion, onEmpty와 같은 catch 메서드를 사용할 수 있습니다.onEachonEach는 중단 함수로, 순서대로 값을 하나씩 받아 처리할 수 있습니다.suspend fun main() { flowOf(1,2,3,4) .onEach { delay(1000) } .collect{ println(it) }}onEmpty예기치 않은 이벤트가 발생하면 플..
플로우 만들기플로우는 어디선가 시작되어야 하며, 필요한 경우에 따라 다양하게 시작할 수 있습니다.원시값을 가지는 플로우플로우를 가지는 가장 간단한 방법은 flowOf를 활용하는 것입니다.suspend fun main() { flowOf(1, 2, 3, 4, 5) .collect { print(it) }}컨버터asFlow 함수를 사용하여 Iterable, Iterator, Sequence를 Flow로 바꿀 수 있습니다.// asFlow 함수를 이용해 즉시 사용 가능한 원소들의 플로우를 만들 수 있습니다.suspend fun main(){ sequenceOf(1,2,3,4,5) // sequenceOf .toSet() //setOf .toList() // li..
💡 flow 인터페이스와 flow 빌더가 실제로 어떻게 동작하는지 이해하기Flow 직접 구현플로우의 원리에 대해 이해하기 위해서 직접 코드로 구현하였습니다.FlowCollector람다식을 통해서 플로우 동작을 구현할 수 있습니다.람다식은 또한 함수를 나타내는 파라미터를 가질 수 있습니다.flow 동작을 이해하기 위해서 해당 파라미터를 emit으로 정의하였습니다.// 이전의 코드는 함수를 파라미터로 전달합니다.// 복잡한 함수형을 간결하게 만들기 위하여 함수형 인터페이스로 추상화합니다.private suspend fun before(){ val f: suspend ((T) -> Unit) -> Unit = { emit -> emit("flow 방출" as T) }}이 때 emit..
💡 안드로이드 4대 컴포넌트 중 하나인 액티비티에 대하여 상세하게 학습하였습니다 ! Activity?액티비티는 안드로이드 애플리케이션에서 사용자 인터페이스를 담당하는 구성 요소입니다.애플리케이션의 하나의 화면을 나타내며, 사용자가 상호작용할 수 있는 UI를 제공합니다.일반적으로는 화면을 채우는 UI 창이지만, 필요에 따라서 다른 창 위에 작게 띄울 수 있습니다.액티비티의 특징UI 화면XML 레이아웃 파일을 통해 UI 요소들을 정의하고, 이 요소들을 코드에서 제어합니다.애플리케이션의 진입점 (런쳐 액티비티)사용자가 첫 번째로 접하는 액티비티를 통해 애플리케이션과 상호작용을 진행하며, 이를 런쳐 액티비티라고 합니다.AndroidManifest.xml 파일에서 intent-filter의 MAIN과 LAUNC..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.