Mocking met MockK
Mock afhankelijkheden
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 enevery { } returnsstelt ze inverify { }controleert interacties- Matchers, vastleggen met
slot,spyken mocks met standaardwaarden clearAllMocks()tussen tests
Hierna: coroutines testen.
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
- Tests schrijven met JUnit5
- Assertions
- Mocking met MockK
- Coroutines testen