CodeBlanks Logo Icon CodeBlanks

Özet - Mockito

Mock, when ve verify'yi birleştirerek bir servis testi yazarsın.

Özet - Mockito

Bu grupta Mockito'nun temel araçlarını gördün: mock() ile sahte nesne, @Mock ve @InjectMocks ile alan tabanlı kurulum, when().thenReturn() ile davranış, verify() ile etkileşim denetimi ve ArgumentMatchers ile esnek eşleştirme.

Şimdi bunları bir mini göreve birleştireceksin: bir OrderService için stub ve denetim mantığını elle kuracaksın. Bu özet, mock'ların gerçekte nasıl çalıştığını gösterir.

Uygulama OrderService için stub kur

Bir OrderService sınıfı tanımla; double priceFor(String sku) yöntemi bir Map<String, Double> tabloya bakar ve fiyat döndürür; bilinmeyen sku için 0.0 döndürür. Bir OrderDemo sınıfında main yaz; tabloya put("A1", 9.99) ve put("B2", 4.50) ekleyin; priceFor("A1") sonucunu yazdır.

Başlangıç kodu

Main.java
import java.util.*;

// OrderService sınıfını tanımla (priceFor yöntemi Map kullanır)

// OrderDemo sınıfında main yaz; tabloya SKU ekle ve priceFor sonucunu yazdır

Örnek çözüm

Main.java
import java.util.*;

class OrderService {
    Map<String, Double> table = new HashMap<>();
    double priceFor(String sku) {
        return table.getOrDefault(sku, 0.0);
    }
}

class OrderDemo {
    public static void main(String[] args) {
        OrderService s = new OrderService();
        s.table.put("A1", 9.99);
        s.table.put("B2", 4.50);
        System.out.println(s.priceFor("A1"));
    }
}

Beklenen çıktı

9.99

Uygulama Etkileşim sayacını ekle

Yeni bir CallTracker sınıfı tanımla; int count tutmak için bir alan ve void record(String sku) yöntemi her çağrıda count'u artırsın. Bir TrackerDemo sınıfında main yaz; record'u iki kez çağır ve count'u yazdır.

Başlangıç kodu

Main.java
// CallTracker sınıfını tanımla (count alanı ve record yöntemi)

// TrackerDemo sınıfında main yaz; record'u iki kez çağır ve count'u yazdır

Örnek çözüm

Main.java
class CallTracker {
    int count = 0;
    void record(String sku) {
        count++;
    }
}

class TrackerDemo {
    public static void main(String[] args) {
        CallTracker t = new CallTracker();
        t.record("A1");
        t.record("B2");
        System.out.println(t.count);
    }
}

Beklenen çıktı

2

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Mockito'da bir mock yöntemine dönüş değeri tanımlamak için ne kullanılır?

  • verify
  • any()
  • @Mock
  • when(...).thenReturn(...) Doğru cevap

Açıklama: when(...).thenReturn(...) ile dönüş değeri tanımlanır.

2 Mockito özetini eşleştir

Kavram Anlamı
mock() Sahte nesne üretir
@Mock Alanı mock işaretler
when Davranış tanımlar
verify Çağrı denetler

İleri seviye bölümündeki tüm dersler