rocketraman
12/01/2023, 8:51 PMMutableStateFlow
and a SharedFlow
with this pattern:
private val state = MutableStateFlow<SomeState>(Initial)
val stateChanges: SharedFlow<SomeState> = state.shareIn(scope, SharingStarted.Eagerly, replay = Int.MAX_VALUE)
however, when subscribing to stateChanges
, it is not deterministic on whether the Initial
state is present or not, because the SharedFlow
is starting in the background and we have a race. This race doesn't matter to my production code, but my tests fail because of the indeterminism. Is there a way to make this deterministic for tests? I am using the coroutines-test library.streetsofboston
12/01/2023, 8:56 PMrocketraman
12/01/2023, 8:56 PMrocketraman
12/01/2023, 8:57 PMstreetsofboston
12/01/2023, 8:57 PMstreetsofboston
12/01/2023, 8:57 PMDaniel Pitts
12/01/2023, 8:59 PMrocketraman
12/01/2023, 8:59 PMrocketraman
12/01/2023, 9:00 PMDaniel Pitts
12/01/2023, 9:00 PMTheMutableStateFlow is not a cold flow.operator is useful in situations when there is a cold flow that is expensive to create and/or to maintain, but there are multiple subscribers that need to collect its valuesshareIn
Daniel Pitts
12/01/2023, 9:02 PMrocketraman
12/01/2023, 9:05 PMDaniel Pitts
12/01/2023, 9:06 PMrocketraman
12/01/2023, 9:06 PMDaniel Pitts
12/01/2023, 9:08 PMrocketraman
12/01/2023, 9:09 PMrocketraman
12/01/2023, 9:10 PMDaniel Pitts
12/01/2023, 9:10 PMMutableList<suspend (State)->Unit>
for the listeners, and manually call them all on transition.rocketraman
12/01/2023, 9:12 PMDaniel Pitts
12/01/2023, 9:13 PMDaniel Pitts
12/01/2023, 9:16 PMDaniel Pitts
12/01/2023, 9:17 PMrocketraman
12/01/2023, 9:18 PMDaniel Pitts
12/01/2023, 9:18 PMrocketraman
12/01/2023, 9:19 PMDaniel Pitts
12/01/2023, 9:19 PMrocketraman
12/01/2023, 9:19 PMDaniel Pitts
12/01/2023, 9:21 PMrocketraman
12/01/2023, 9:21 PMrocketraman
12/01/2023, 9:21 PMrocketraman
12/01/2023, 9:22 PMDaniel Pitts
12/01/2023, 9:23 PMrocketraman
12/01/2023, 9:24 PMrocketraman
12/01/2023, 9:29 PMDaniel Pitts
12/01/2023, 9:30 PMrocketraman
12/01/2023, 9:30 PMDaniel Pitts
12/01/2023, 9:31 PMDaniel Pitts
12/01/2023, 9:31 PMrocketraman
12/01/2023, 9:34 PMReceiver
there?Daniel Pitts
12/01/2023, 9:35 PMDaniel Pitts
12/01/2023, 9:36 PMtypealias Receiver = suspend (State)->Unit
Daniel Pitts
12/01/2023, 9:37 PMrocketraman
12/01/2023, 9:38 PMrocketraman
12/01/2023, 9:38 PMDaniel Pitts
12/01/2023, 9:40 PMDaniel Pitts
12/01/2023, 9:40 PMDaniel Pitts
12/01/2023, 9:41 PMrocketraman
12/01/2023, 9:42 PMrocketraman
12/01/2023, 9:44 PMDaniel Pitts
12/01/2023, 9:45 PMDaniel Pitts
12/01/2023, 9:45 PMDaniel Pitts
12/01/2023, 9:47 PMrocketraman
12/01/2023, 9:47 PMDaniel Pitts
12/01/2023, 9:47 PMrocketraman
12/01/2023, 9:47 PMrocketraman
12/01/2023, 9:47 PMDaniel Pitts
12/01/2023, 9:48 PMrocketraman
12/01/2023, 9:49 PMrocketraman
12/01/2023, 9:49 PM