private val _isLoading = MutableStateFlow(false)
val isLoading :StateFlow = _isLoading.asStateFlow()
fun fetchDeviceInfo(){
currentJob?.cancel()
currentJob =viewModelScope.launch {
repository.fetchTrackerData()
.flowOn(Dispatchers.IO)// this is used to make emit on IO
.catch { e->
_isLoading.emit(false)
_isError.emit(true)
}
.collect{data->
withContext(Dispatchers.IO) {
when (data) {
is TrackerState.Error -> {
_isError.emit(true)
_isLoading.emit(false)
}
is TrackerState.Loading -> {
_isLoading.emit(true)
}
is TrackerState.Success -> {
_isError.emit(false)
_listData.emit(data.data)
_isLoading.emit(false)
}
}
}
}
}
}
< /code>
Dies ist mein fakerepository, mit dem ich Daten zu < /p>
emittiert habe
suspend fun emit(value:TrackerState) = flow{
emit(value)
}
override suspend fun fetchTrackerData()=flow
< /code>
Dies ist meine Testfunktion, ich habe Mockito hier nicht verwendet < /p>
fun `fetchDeviceInfo should update Loading`()= runTest {
viewModel.fetchDeviceInfo()//collector of flow
repository.emit(TrackerState.Loading())// our fake emitter
advanceUntilIdle()
assert(viewModel.isLoading.value)
}```
i then tried adding advanceUntileIdle after seeing that collect itself is a suspend function so take time to setup
`@Test
fun `fetchDeviceInfo should update Loading`()= runTest {
viewModel.fetchDeviceInfo()//collector of flow
advanceUntilIdle()
repository.emit(TrackerState.Loading())// our fake emitter
advanceUntilIdle()
assert(viewModel.isLoading.value)
}`
this fixed my issued but still why do i use advanceUntilIdle() again ?
Ich habe versucht, einen IO -Aufruf zu testen, der über einen Fluss getätigt wird. Ich gibt mir einfach die Liste der Daten zurück.[code]private val _isLoading = MutableStateFlow(false) val isLoading :StateFlow = _isLoading.asStateFlow()
fun fetchDeviceInfo(){ currentJob?.cancel() currentJob =viewModelScope.launch { repository.fetchTrackerData() .flowOn(Dispatchers.IO)// this is used to make emit on IO .catch { e-> _isLoading.emit(false) _isError.emit(true) } .collect{data-> withContext(Dispatchers.IO) { when (data) { is TrackerState.Error -> { _isError.emit(true) _isLoading.emit(false) }
is TrackerState.Loading -> { _isLoading.emit(true) }
} } < /code> Dies ist mein fakerepository, mit dem ich Daten zu < /p> emittiert habe suspend fun emit(value:TrackerState) = flow{ emit(value) }
override suspend fun fetchTrackerData()=flow < /code> Dies ist meine Testfunktion, ich habe Mockito hier nicht verwendet < /p> fun `fetchDeviceInfo should update Loading`()= runTest { viewModel.fetchDeviceInfo()//collector of flow repository.emit(TrackerState.Loading())// our fake emitter advanceUntilIdle() assert(viewModel.isLoading.value) }```
i then tried adding advanceUntileIdle after seeing that collect itself is a suspend function so take time to setup
`@Test fun `fetchDeviceInfo should update Loading`()= runTest { viewModel.fetchDeviceInfo()//collector of flow advanceUntilIdle() repository.emit(TrackerState.Loading())// our fake emitter advanceUntilIdle() assert(viewModel.isLoading.value) }`
this fixed my issued but still why do i use advanceUntilIdle() again ? [/code]
Ich habe ein Multi -Modul -Projekt mit sowohl Android- als auch Kotlin -Modulen. :data ist ein Android -Modul. Dies hat nur die Varianten debug und veröffentlicht .
:domain ist ein Kotlin -Modul....
Ich habe eine Website mit Laravel 11 erstellt. Die Website läuft reibungslos, aber manchmal wird ein Fehler wie 500 Serverfehler angezeigt. Ich habe laravel.log überprüft und Folgendes gefunden....
Wir versuchen, eine Lösung zu finden, damit AWS S3 unsere Python-Pakete hosten und verteilen kann.
Grundsätzlich möchten wir python3 setup.py bdist_wheel verwenden um ein Rad zu erstellen. Laden Sie...