0Pricing
Kotlin Academy · Aula

Simulação com MockK

Simule as dependências

Simulação com MockK é uma aula grátis de Kotlin Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Kotlin Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Kotlin Academy inclui 4 aulas no total.

O que é o MockK?

MockK é uma biblioteca de simulação criada para Kotlin. Ela cria versões falsas das dependências, para que você possa testar uma classe isoladamente.

  • Suporte completo ao Kotlin (objetos, extensões e corrotinas)
  • DSL legível para configurar comportamentos e verificar chamadas

Adicionando o MockK

Adicione o MockK como dependência de teste.

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

Criando uma simulação

Use mockk<Type>() para criar uma simulação. Por padrão, os métodos dela não são configurados e falharão se forem chamados.

import io.mockk.mockk

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

val repo = mockk<Repo>()

Configurando comportamentos com every

Defina o comportamento usando every { } returns .... Isso informa à simulação o que retornar para uma determinada chamada.

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"

Verificando chamadas

Use verify { } para verificar se um método foi chamado. Você pode exigir uma quantidade exata de chamadas.

import io.mockk.verify

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

Correspondedores de argumentos

Correspondedores como any(), eq() e match { } tornam as configurações e verificações flexíveis.

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"

Simulações relaxadas

Uma simulação relaxed retorna valores padrão razoáveis (0, uma string vazia etc.) para chamadas não configuradas, para que você não precise configurar tudo.

import io.mockk.mockk

interface Logger { fun log(msg: String) }

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

Capturando argumentos

Use um slot com capture() para inspecionar o argumento exato passado a um método simulado.

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

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

Espiões

Um spyk envolve um objeto real: os métodos reais são executados, a menos que você os configure. Isso é útil para simulação parcial.

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) }

Lançando uma exceção de uma simulação

Configure um método para lançar uma exceção, para que você possa testar os caminhos de tratamento de erros.

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()

Fazendo a limpeza

Chame clearAllMocks() em @AfterEach ou use a MockKExtension do JUnit5 para redefinir o estado das simulações entre os testes e evitar vazamentos.

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

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

Verificação rápida

Você tem uma simulação com muitos métodos, mas só se importa com um deles. Quer que os métodos não configurados retornem valores padrão inofensivos. O que deve criar?

Recapitulação

O MockK permite isolar o código que está sendo testado:

  • mockk() cria simulações e every { } returns as configura
  • verify { } verifica as interações
  • Correspondedores, captura com slot, spyk e simulações relaxadas
  • clearAllMocks() entre os testes

A seguir: testando corrotinas.

Perguntas Frequentes

A aula “Simulação com MockK” é grátis?

Sim — o texto completo de “Simulação com MockK” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Kotlin Academy, atualize para CoddyKit PRO. O curso de Kotlin Academy inclui 4 aulas no total.

O que vou aprender em “Simulação com MockK”?

Simule as dependências Você pratica Kotlin Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Kotlin Academy?

Nenhuma experiência prévia é necessária. Kotlin Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Simulação com MockK”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Kotlin Academy?

Sim. Cada aula de Kotlin Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Escrita de Testes com JUnit5
  2. Asserções
  3. Simulação com MockK
  4. Testes de Corrotinas
← Voltar para Kotlin Academy