Pruebe funciones suspend y Flows
Use runTest y Turbine para comprobar el comportamiento asíncrono.
Pruebe funciones suspend y Flows es una lección gratuita de Kotlin Multiplatform Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Kotlin Multiplatform Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Kotlin Multiplatform Academy incluye 4 lecciones en total.
El código asíncrono necesita pruebas especiales
Las funciones suspend y los Flows no terminan al instante, por lo que necesita herramientas que esperen al trabajo asíncrono antes de realizar las aserciones. ⏳
Conozca runTest
Envuelva las aserciones asíncronas en runTest, de la biblioteca coroutines-test; proporciona un ámbito y omite automáticamente las esperas virtuales.
@Test
fun loadsUser() = runTest {
val u = repo.load(1)
assertEquals("Sam", u.name)
}Añada la utilidad de pruebas
Incluya kotlinx-coroutines-test en commonTest para que runTest y sus funciones relacionadas estén disponibles en todos los destinos.
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0")Esperar el resultado de una función suspend
Dentro de runTest, solo tiene que llamar directamente a la función suspend y realizar la aserción sobre el valor que devuelva.
val total = calc.fetchTotal()
assertEquals(42, total)El tiempo se omite automáticamente
runTest utiliza tiempo virtual, por lo que un delay de varios segundos se resuelve de inmediato y las pruebas siguen siendo rápidas.
Probar un Flow manualmente
Puede recopilar un Flow finito en una lista con toList y realizar aserciones sobre los valores emitidos.
val values = numbers().toList()
assertEquals(listOf(1, 2, 3), values)Por qué Turbine resulta útil
Para los flujos continuos, la biblioteca Turbine permite esperar los elementos uno a uno sin tener que gestionar manualmente la recopilación.
Añada Turbine
Incluya Turbine en commonTest; es una pequeña utilidad multiplataforma creada específicamente para probar Flows.
implementation("app.cash.turbine:turbine:1.1.0")Espere elementos con test
Turbine envuelve un Flow en un bloque test, donde awaitItem devuelve cada emisión en orden.
flow.test {
assertEquals(1, awaitItem())
awaitComplete()
}Finalice el flujo correctamente
Termine cada bloque de Turbine con awaitComplete o cancel, o la prueba fallará porque quedarán eventos sin consumir.
Compruebe las actualizaciones de StateFlow
Turbine resulta especialmente útil con StateFlow: espere el valor inicial, active una acción y, después, espere el siguiente estado emitido.
Comprobación rápida
Elija el contenedor de pruebas asíncronas adecuado.
Resumen
Use runTest para el código suspend y el bloque test de Turbine para esperar las emisiones de Flow, todo desde commonTest.
Aprende Kotlin con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 30
- Lecciones
- 120
Preguntas frecuentes
¿La lección «Pruebe funciones suspend y Flows» es gratis?
Sí — el texto completo de «Pruebe funciones suspend y Flows» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Kotlin Multiplatform Academy, actualiza a CoddyKit PRO. El curso de Kotlin Multiplatform Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Pruebe funciones suspend y Flows»?
Use runTest y Turbine para comprobar el comportamiento asíncrono. Practicas Kotlin Multiplatform Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Kotlin Multiplatform Academy?
No se requiere experiencia previa. Kotlin Multiplatform Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Pruebe funciones suspend y Flows»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Kotlin Multiplatform Academy?
Sí. Cada lección de Kotlin Multiplatform Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- kotlin.test en commonTest
- Pruebe funciones suspend y Flows
- Simule el cliente de Ktor y los repositorios
- Ejecute pruebas en destinos de Android y iOS