alertDialogBuilderFactory = MockAlertDialogBuilderFactory() val router = MockRouter.create() val activityJourneyBuilder = MockActivityJourneyBuilder(MockBundleData.create("key-result" to true)) router.putJourneyGuidance(PinCodeActivityJourneyGuidance::class, object : PinCodeActivityJourneyGuidance(activityJourneyBuilder) {}) viewModel.flowDeleteMemo(flowViewInteractionController.asStream(), router, alertDialogBuilderFactory) .turbine { turbine -> turbine.expectNoEvents() // 시작 flowViewInteractionController.find(TriggerEvent.BTN_DELETE_MEMO).click() // Dialog 데이터 확인 alertDialogBuilderFactory.check("메모를 삭제할까요?", "확인") // Router 확인 Assertions.assertEquals(1, router.findCount[PinCodeActivityJourneyGuidance::class]) Assertions.assertEquals(1, activityJourneyBuilder.buildCount) Assertions.assertEquals(1, activityJourneyBuilder.lastJourney!!.visitCountForResult) turbine.cancelAndConsumeRemainingEvents() } 1 버튼에 대한 액션을 처리합니다. SharedFlow를 활용하고 있기 때문에 처음 시작은 이벤트가 없습니다. 이벤트를 찾고, 이에 대한 click을 발생시킵니다. 참고로 jakewharton의 turbine을 사용합니다.