Kotlin Academy · Les

Mocking met MockK

Mock afhankelijkheden

Les 3 van 413 stappen

Mocking met MockK is een gratis Kotlin Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Kotlin Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Kotlin Academy bevat in totaal 4 lessen.

Wat is MockK?

MockK is een bibliotheek voor mocken, speciaal voor Kotlin. Hiermee maak je nepversies van afhankelijkheden, zodat je een klasse geïsoleerd kunt testen.

  • Volwaardige Kotlin-ondersteuning (objecten, uitbreidingen en coroutines)
  • Een leesbare DSL voor het instellen van stubs en het verifiëren van aanroepen

MockK toevoegen

Voeg MockK toe als testafhankelijkheid.

dependencies {
    testImplementation("io.mockk:mockk:1.13.11")
}

Een mock maken

Gebruik mockk<Type>() om een mock te maken. Standaard zijn de methoden ervan niet ingesteld en mislukt de aanroep als je ze uitvoert.

import io.mockk.mockk

interface Repo { fun find(id: Int): String }

val repo = mockk<Repo>()

Stubben met every

Definieer gedrag met every { } returns .... Hiermee bepaal je wat de mock voor een bepaalde aanroep retourneert.

import io.mockk.every
import io.mockk.mockk

interface Repo { fun find(id: Int): String }

val repo = mockk<Repo>()
// every { repo.find(1) } returns "Ada"

Aanroepen verifiëren

Gebruik verify { } om te controleren of een methode is aangeroepen. Je kunt een exact aantal aanroepen vereisen.

import io.mockk.verify

// verify { repo.find(1) }
// verify(exactly = 2) { repo.find(any()) }
// verify(exactly = 0) { repo.find(99) }

Argumentmatchers

Matchers zoals any(), eq() en match { } maken stubs en verificaties flexibel.

import io.mockk.every
import io.mockk.mockk

interface Repo { fun find(id: Int): String }
val repo = mockk<Repo>()
// every { repo.find(any()) } returns "X"
// every { repo.find(match { it > 10 }) } returns "big"

Mocks met standaardwaarden

Een relaxed-mock retourneert zinvolle standaardwaarden (0, lege tekenreeks enzovoort) voor niet-ingestelde aanroepen, zodat je niet alles hoeft te stubben.

import io.mockk.mockk

interface Logger { fun log(msg: String) }

val logger = mockk<Logger>(relaxed = true)

Argumenten vastleggen

Gebruik een slot met capture() om het exacte argument te bekijken dat aan een gemockte methode is doorgegeven.

import io.mockk.slot
import io.mockk.verify

val msgSlot = slot<String>()
// verify { logger.log(capture(msgSlot)) }
// println(msgSlot.captured)

Spies

Een spyk omwikkelt een echt object: echte methoden worden uitgevoerd tenzij je ze stubt. Dit is nuttig voor gedeeltelijk mocken.

import io.mockk.spyk

class Calc { fun square(n: Int) = n * n }

val calc = spyk(Calc())
// real square runs; you can still verify { calc.square(3) }

Een mock een fout laten gooien

Stel een methode zo in dat deze een fout gooit, zodat je paden voor foutafhandeling kunt testen.

import io.mockk.every
import io.mockk.mockk

interface Repo { fun find(id: Int): String }
val repo = mockk<Repo>()
// every { repo.find(0) } throws NoSuchElementException()

Opruimen

Roep clearAllMocks() aan in @AfterEach of gebruik de JUnit5-extensie MockKExtension om de mockstatus tussen tests te resetten en lekken te voorkomen.

import io.mockk.clearAllMocks
import org.junit.jupiter.api.AfterEach

class ServiceTest {
    @AfterEach
    fun tearDown() { clearAllMocks() }
}

Snelle controle

Je hebt een mock met veel methoden, maar je geeft slechts om één daarvan. Je wilt dat niet-ingestelde methoden onschadelijke standaardwaarden retourneren. Wat maak je aan?

Samenvatting

Met MockK kun je de te testen code isoleren:

  • mockk() maakt mocks en every { } returns stelt ze in
  • verify { } controleert interacties
  • Matchers, vastleggen met slot, spyk en mocks met standaardwaarden
  • clearAllMocks() tussen tests

Hierna: coroutines testen.

Gratis beginnen

Leer Kotlin met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
51
Lessen
203

Veelgestelde vragen

Is de les “Mocking met MockK” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Kotlin Academy, waaronder “Mocking met MockK”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Kotlin Academy bevat in totaal 4 lessen.

Wat leer ik in “Mocking met MockK”?

Mock afhankelijkheden Je oefent met Kotlin Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Kotlin Academy te beginnen?

Ervaring vooraf is niet nodig. Kotlin Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Mocking met MockK”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Kotlin Academy?

Ja. Elke les over Kotlin Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Tests schrijven met JUnit5
  2. Assertions
  3. Mocking met MockK
  4. Coroutines testen
← Terug naar Kotlin Academy