Simulation avec MockK
Simuler les dépendances
Simulation avec MockK est une leçon Kotlin Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Kotlin Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Kotlin Academy comprend 4 leçons au total.
Qu’est-ce que MockK ?
MockK est une bibliothèque de simulation conçue pour Kotlin. Elle crée de fausses versions des dépendances afin que vous puissiez tester une classe de manière isolée.
- Prise en charge native de Kotlin (objets, extensions, coroutines)
- DSL lisible pour définir des comportements et vérifier les appels
Ajouter MockK
Ajoutez MockK comme dépendance de test.
dependencies {
testImplementation("io.mockk:mockk:1.13.11")
}Créer une simulation
Utilisez mockk<Type>() pour créer une simulation. Par défaut, ses méthodes ne sont pas configurées et échoueront si elles sont appelées.
import io.mockk.mockk
interface Repo { fun find(id: Int): String }
val repo = mockk<Repo>()Définir un comportement avec every
Définissez le comportement avec every { } returns .... Cela indique à la simulation quoi renvoyer pour un appel donné.
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"Vérifier les appels
Utilisez verify { } pour vérifier qu’une méthode a été appelée. Vous pouvez exiger un nombre d’appels exact.
import io.mockk.verify
// verify { repo.find(1) }
// verify(exactly = 2) { repo.find(any()) }
// verify(exactly = 0) { repo.find(99) }Correspondance des arguments
Des outils de correspondance comme any(), eq() et match { } rendent les configurations et les vérifications flexibles.
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"Simulations détendues
Une simulation relaxed renvoie des valeurs par défaut raisonnables (0, chaîne vide, etc.) pour les appels non configurés, afin que vous n’ayez pas à tout configurer.
import io.mockk.mockk
interface Logger { fun log(msg: String) }
val logger = mockk<Logger>(relaxed = true)Capturer les arguments
Utilisez un slot avec capture() pour examiner l’argument exact transmis à une méthode simulée.
import io.mockk.slot
import io.mockk.verify
val msgSlot = slot<String>()
// verify { logger.log(capture(msgSlot)) }
// println(msgSlot.captured)Espions
Un spyk enveloppe un objet réel : ses méthodes réelles s’exécutent tant que vous ne les configurez pas. C’est utile pour une simulation partielle.
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) }Lever une exception depuis une simulation
Configurez une méthode pour qu’elle lève une exception, afin de pouvoir tester les chemins de gestion des erreurs.
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()Nettoyage
Appelez clearAllMocks() dans @AfterEach, ou utilisez le MockKExtension de JUnit5, pour réinitialiser l’état des simulations entre les tests et éviter les fuites d’état.
import io.mockk.clearAllMocks
import org.junit.jupiter.api.AfterEach
class ServiceTest {
@AfterEach
fun tearDown() { clearAllMocks() }
}Vérification rapide
Vous disposez d’une simulation comportant de nombreuses méthodes, mais une seule vous intéresse. Vous voulez que les méthodes non configurées renvoient des valeurs par défaut inoffensives. Que devez-vous créer ?
Récapitulatif
MockK vous permet d’isoler le code testé :
mockk()crée des simulations etevery { } returnsles configureverify { }vérifie les interactions- Outils de correspondance, capture avec
slot,spyk, simulations détendues clearAllMocks()entre les tests
Ensuite : tester les coroutines.
Questions Fréquemment Posées
La leçon « Simulation avec MockK » est-elle gratuite ?
Oui — le texte complet de « Simulation avec MockK » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Kotlin Academy, passe à CoddyKit PRO. Le cours Kotlin Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Simulation avec MockK » ?
Simuler les dépendances Tu pratiques Kotlin Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Kotlin Academy ?
Aucune expérience préalable n'est requise. Kotlin Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Simulation avec MockK » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Kotlin Academy ?
Oui. Chaque leçon Kotlin Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Écrire des tests avec JUnit5
- Assertions
- Simulation avec MockK
- Tests des coroutines