Mock
- Java kursu
- İleri seviye
- Ders 49/82
- 5 dk
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
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
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
import static org.mockito.Mockito.*;
UserRepository repo = ____(UserRepository.class);
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 |