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 eevery { } returnsas configuraverify { }verifica as interações- Correspondedores, captura com
slot,spyke 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
- Escrita de Testes com JUnit5
- Asserções
- Simulação com MockK
- Testes de Corrotinas