0Pricing
Kotlin Academy · Ders

MockK ile Taklitler

Bağımlılıkları taklit edin

MockK ile Taklitler, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Kotlin Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Kotlin Academy kursu toplamda 4 dersten oluşur.

MockK nedir?

MockK, Kotlin için oluşturulmuş bir sahteleme kitaplığıdır. Bir sınıfı yalıtılmış olarak test edebilmeniz için bağımlılıkların sahte sürümlerini oluşturur.

  • Birinci sınıf Kotlin desteği (nesneler, uzantılar, korutinler)
  • Davranış tanımlama ve doğrulama için okunabilir DSL

MockK ekleme

MockK'yı test bağımlılığı olarak ekleyin.

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

Sahte nesne oluşturma

Bir sahte nesne oluşturmak için mockk<Type>() kullanın. Varsayılan olarak yöntemlerinin davranışı tanımlanmamıştır ve çağrılırlarsa hata verirler.

import io.mockk.mockk

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

val repo = mockk<Repo>()

every ile davranış tanımlama

every { } returns ... kullanarak davranış tanımlayın. Bu, sahte nesneye belirli bir çağrı için ne döndüreceğini bildirir.

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"

Çağrıları doğrulama

Bir yöntemin çağrıldığını doğrulamak için verify { } kullanın. Tam bir çağrı sayısı da isteyebilirsiniz.

import io.mockk.verify

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

Bağımsız değişken eşleştiricileri

any(), eq() ve match { } gibi eşleştiriciler, davranış tanımlama ve doğrulamaları esnek hale getirir.

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"

Gevşek sahte nesneler

relaxed bir sahte nesne, davranışı tanımlanmamış çağrılar için makul varsayılan değerler (0, boş dize vb.) döndürür; böylece her şeyi ayrıca tanımlamanız gerekmez.

import io.mockk.mockk

interface Logger { fun log(msg: String) }

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

Bağımsız değişkenleri yakalama

Bir sahte yönteme iletilen tam bağımsız değişkeni incelemek için capture() ile birlikte bir slot kullanın.

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

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

Casus nesneler

spyk, gerçek bir nesneyi sarar: davranışını tanımlamadığınız sürece gerçek yöntemler çalışır. Kısmi sahteleme için kullanışlıdır.

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

Sahte nesneden istisna fırlatma

Hata işleme yollarını test edebilmek için bir yöntemin istisna fırlayacağı şekilde davranışını tanımlayın.

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

Temizleme

Testler arasında sahte nesne durumunu sıfırlamak ve durum sızıntısını önlemek için @AfterEach içinde clearAllMocks() çağırın veya JUnit5 MockKExtension kullanın.

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

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

Hızlı kontrol

Birçok yöntemi olan bir sahte nesneniz var, ancak yalnızca biriyle ilgileniyorsunuz. Davranışı tanımlanmamış yöntemlerin zararsız varsayılan değerler döndürmesini istiyorsunuz. Ne oluşturursunuz?

Özet

MockK, test edilen kodu yalıtmanızı sağlar:

  • mockk() sahte nesneler oluşturur, every { } returns bunların davranışını tanımlar
  • verify { } etkileşimleri denetler
  • Eşleştiriciler, slot ile yakalama, spyk ve gevşek sahte nesneler
  • Testler arasında clearAllMocks()

Sonraki konu: korutinleri test etme.

Sıkça Sorulan Sorular

“MockK ile Taklitler” dersi ücretsiz mi?

Evet — “MockK ile Taklitler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Kotlin Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Kotlin Academy kursu toplamda 4 dersten oluşur.

“MockK ile Taklitler” dersinde ne öğreneceğim?

Bağımlılıkları taklit edin Kotlin Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Kotlin Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Kotlin Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“MockK ile Taklitler” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Kotlin Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Kotlin Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. JUnit5 ile Test Yazma
  2. Doğrulamalar
  3. MockK ile Taklitler
  4. Korutin Testi
← Kotlin Academy Sayfasına Dön