Kotlin Multiplatform Academy · Lección

Pruebe funciones suspend y Flows

Use runTest y Turbine para comprobar el comportamiento asíncrono.

Lección 2 de 413 pasos

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.

Gratis para empezar

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

  1. kotlin.test en commonTest
  2. Pruebe funciones suspend y Flows
  3. Simule el cliente de Ktor y los repositorios
  4. Ejecute pruebas en destinos de Android y iOS
← Volver a Kotlin Multiplatform Academy