CodeBlanks Logo Icon CodeBlanks

Mock

Mockito.mock ile sahte nesneleri öğrenirsin.

Mock

Mock, gerçek bir nesnenin davranışını taklit eden sahte bir nesnedir. Mockito.mock() ile bir sınıfın mock'ı oluşturulur; böylece testler bağımlılıklardan (veritabanı, ağ) etkilenmez.

UserRepository repo = mock(UserRepository.class);
when(repo.findById(1)).thenReturn(new User("Ayşe"));
User u = repo.findById(1);

Mock'lar testleri hızlı ve öngörülebilir yapar. Gerçek veritabanına bağlanmadan belirli senaryoları deneyebilirsin. Bu, birim testlerinin temelidir; yan etkilerden izole çalışırsın.

Mockito kurulumu

Mockito, JUnit 5 ile birlikte kullanılır. mock() yöntemi statik olarak içe aktarılır; bu, kısa çağrı yazmayı sağlar.

import static org.mockito.Mockito.*;

UserRepository repo = mock(UserRepository.class);
MailService mail = mock(MailService.class);

Buradaki repo ve mail, gerçek nesneler gibi yöntem çağrılarını kabul eder; ancak varsayılan olarak boş değer döndürürler. when ile davranış tanımlayınca belirli değerler döndürürler. Bu, testin denetimini ele alır.

Uygulama Mock ile UserRepository sahtesi

Bir User sınıfı tanımla (adı alanı olsun). UserRepository arayüzü tanımla; User findById(int id) yöntemi olsun. Bir MockDemo sınıfında main metodu yaz; gerçek Map<Integer, User> oluştur, put(1, new User("Ayşe")) yap ve get(1) ile aldığın kullanıcının adını yazdır. Mock'ı simüle eden bu basit yapı, gerçek mock yerine kullanılır.

Başlangıç kodu

Main.java
import java.util.*;

// User sınıfını tanımla (name alanı)

// UserRepository arayüzünü tanımla (findById yöntemi)

// MockDemo sınıfında main yaz ve kullanıcının adını yazdır

Örnek çözüm

Main.java
import java.util.*;

class User {
    String name;
    User(String name) { this.name = name; }
}

interface UserRepository {
    User findById(int id);
}

class MockDemo {
    public static void main(String[] args) {
        Map<Integer, User> repo = new HashMap<>();
        repo.put(1, new User("Ayşe"));
        System.out.println(repo.get(1).name);
    }
}

Beklenen çıktı

Ayşe

Soru ve cevaplar

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

1 Bir mock nesnesi ne işe yarar?

  • Gerçek nesnenin davranışını taklit eder Doğru cevap
  • Gerçek veritabanına bağlanır
  • Testi derler
  • Test raporu üretir

Açıklama: Mock, gerçek nesnenin davranışını taklit eden sahte nesnedir.

2 mock çağrısını tamamla

Soru
import static org.mockito.Mockito.*;

UserRepository repo = ____(UserRepository.class);
Cevap
import static org.mockito.Mockito.*;

UserRepository repo = mock(UserRepository.class);

Açıklama: mock() ile sahte nesne oluşturulur.

3 Mockito kavramlarını eşleştir

Kavram Anlamı
mock Sahte nesne oluşturur
when Davranış tanımlar
verify Çağrı denetimi yapar
spy Gerçek nesneyi sarmalar

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