0Pricing
Kotlin Academy · Leçon

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 et every { } returns les configure
  • verify { } 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

  1. Écrire des tests avec JUnit5
  2. Assertions
  3. Simulation avec MockK
  4. Tests des coroutines
← Retour à Kotlin Academy