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 { } returnsbunların davranışını tanımlarverify { }etkileşimleri denetler- Eşleştiriciler,
slotile yakalama,spykve 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
- JUnit5 ile Test Yazma
- Doğrulamalar
- MockK ile Taklitler
- Korutin Testi