Buen dia, Pregunta: en un viewmodel, tengo una fun...
# colombia
m
Buen dia, Pregunta: en un viewmodel, tengo una funcion de consulta por texto, el texto lo tengo como mutableState, al momento en que se actualiza el texto, debo ejecutar una funcion suspend para hacer la busqueda; aparte, tengo un mutable state sobre el state de los resultados de la consulta. Al momento de la actualizacion del texto, si este ultimo es vacio, el estado es
none
, y si no, se pasa a
searching
, en este punto es donde debo realizar la busqueda, sobre la cual, dependiendo del listado de resultados, el state pasa a
empty
o a
success
.. Cómo puedo hacer que se ejecute la función de consulta dado el state? en lo que llevo haciendo, si hay texto no vacio, el state al momento de hacer collect sale
searching
y no
empty/success
😞
a
Creo mas no estoy seguro de q podrias usar un debouncer para ese caso: https://medium.com/@NickFan34818768/debounce-kotlin-coroutines-11ca151d12e8
m
el debouncer debo pasarselo en una prueba unitaria? private val searchDebouncer = Debouncer(400) nota: en serio llevo varios dias con este tema
usando el debouncer custom del ejemplo, me sale este error:
kotlinx.coroutines.test.UncompletedCoroutinesError: After waiting for 1m, the test coroutine is not completing
a
Prueba usando turbine para hacer q pase ese tiempo hasta el siguiente estado, supongo q estás con compose y estás tratando de probar un uistate
m
probando con mockk y turbine, me sale este error:
kotlinx.coroutines.CoroutinesInternalError: Fatal exception in coroutines machinery for DispatchedContinuation[Dispatchers.IO, Continuation at dev.marlonlom.apps.cappajv.features.catalog_list.CatalogListRepository$fetchCatalogItems$2.invokeSuspend(CatalogListRepository.kt)@11a67ce0]. Please read KDoc to 'handleFatalException' method and report this incident to maintainers
a
No sabría q podría estar causandote ese error, pero validaste aplicando el coroutine rule mencionan en el segundo articulo?, creería q es por eso
m
si, @Alejandro Rios, tengo un maincocoutine rule, he actualizado kotlinx-coroutines-test, incluso inclui mockk... al ejecutar las pruebas unitarias fallan y por momentos me sale el coroutinesinternalerror
leyendo un poco sobre mockk y kotlinx-coroutines-test, parece hay issues sobre esas dos librerias:
mockk -> https://github.com/mockk/mockk/issues/1078
kotlinx-coroutines-test -> https://github.com/Kotlin/kotlinx.coroutines/issues/3705
a
Si pudiste resolverlo?, como lo hiciste?
m
@Alejandro Rios Hola, revisando en stackoverflow <https://stackoverflow.com/questions/77743697/while-updating-the-kotlin-version-from-1-7-10-to-1-9-10-multiple-test-cases-are> encontré un topic sobre una clase llamada
RethrowingExceptionHandler
.. utilice esta clase y las pruebas salieron exitosas. Si bien, aún tengo la duda de cómo eso solucionó el tema de que en github actions las pruebas donde uso mocks fallan (en localhost funcionan bien ) ...
👍 1