Kotlin Multiplatform Academy · Lektion

Testa suspend-funktioner och Flows

Använd runTest och Turbine för att verifiera asynkront beteende.

Lektion 2 av 413 steg

Testa suspend-funktioner och Flows är en gratis lektion i Kotlin Multiplatform Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Kotlin Multiplatform Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Kotlin Multiplatform Academy innehåller totalt 4 lektioner.

Asynkront arbete kräver särskilda tester

Suspend-funktioner och Flows blir inte klara direkt, så ni behöver verktyg som väntar på det asynkrona arbetet innan ni gör assertioner. ⏳

Möt runTest

Omslut asynkrona assertioner med runTest från biblioteket coroutines-test. Det tillhandahåller ett scope och hoppar automatiskt över virtuella fördröjningar.

@Test
fun loadsUser() = runTest {
    val u = repo.load(1)
    assertEquals("Sam", u.name)
}

Lägg till testverktyget

Lägg till kotlinx-coroutines-test i commonTest så att runTest och relaterade funktioner är tillgängliga på varje målplattform.

implementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0")

Vänta på ett suspend-resultat

I suspend-funktionen anropar du helt enkelt funktionen direkt och gör en kontroll mot det den returnerar.

val total = calc.fetchTotal()
assertEquals(42, total)

Tidsfördröjningar hoppas över automatiskt

runTest använder virtuell tid, så en delay på flera sekunder löses omedelbart och testerna förblir snabba.

Testa en Flow manuellt

Du kan samla en ändlig Flow i en lista med toList och kontrollera de värden som skickas ut.

val values = numbers().toList()
assertEquals(listOf(1, 2, 3), values)

Därför är Turbine användbart

För pågående strömmar låter biblioteket Turbine dig invänta objekt ett i taget utan manuell hantering av insamlingen.

Lägg till Turbine

Lägg till Turbine i commonTest. Det är ett litet multiplattformsverktyg som är byggt särskilt för att testa Flows.

implementation("app.cash.turbine:turbine:1.1.0")

Invänta objekt med test

Turbine omsluter en Flow i ett test-block där awaitItem returnerar varje utskickat värde i rätt ordning.

flow.test {
    assertEquals(1, awaitItem())
    awaitComplete()
}

Avsluta strömmen på rätt sätt

Avsluta varje Turbine-block med awaitComplete eller avbryt det. Annars misslyckas testet på grund av ej konsumerade händelser.

Kontrollera uppdateringar i StateFlow

Turbine är särskilt användbart för StateFlow: invänta startvärdet, utlös en åtgärd och invänta sedan nästa utskickade tillstånd.

Snabbkontroll

Välj rätt asynkrona testomslutning.

Sammanfattning

Använd runTest för suspend-kod och Turbines test-block för att invänta Flow-utskick, allt från commonTest.

Gratis att börja

Lär dig Kotlin med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
30
Lektioner
120

Vanliga frågor

Är lektionen ”Testa suspend-funktioner och Flows” gratis?

Ja – hela texten till ”Testa suspend-funktioner och Flows” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Kotlin Multiplatform Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Kotlin Multiplatform Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Testa suspend-funktioner och Flows”?

Använd runTest och Turbine för att verifiera asynkront beteende. Ni övar på Kotlin Multiplatform Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Kotlin Multiplatform Academy?

Du behöver inga förkunskaper. Utbildningen i Kotlin Multiplatform Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Testa suspend-funktioner och Flows”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Kotlin Multiplatform Academy-lektionen?

Ja. Varje Kotlin Multiplatform Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. kotlin.test i commonTest
  2. Testa suspend-funktioner och Flows
  3. Fejka Ktor-klienten och repositorier
  4. Kör tester på Android- och iOS-mål
← Tillbaka till Kotlin Multiplatform Academy